pytest 如何批量执行用例
时间: 2023-09-13 11:05:47 浏览: 314
pytest 可以通过指定目录或文件名来批量执行用例。具体的做法是:
1. 在终端中进入到测试用例所在的目录,或者直接指定测试用例文件。
2. 执行如下命令:
```
pytest [options] [dir_or_file]
```
其中,`[options]` 是 pytest 的参数选项,可以用来指定测试报告的输出格式、测试用例的筛选规则、并发执行的进程数等等。
`[dir_or_file]` 表示测试用例所在的目录或者测试用例文件名。
例如,如果测试用例文件名为 `test_sample.py`,则可以执行如下命令:
```
pytest test_sample.py
```
如果测试用例分散在多个文件中,可以执行如下命令:
```
pytest test_dir/
```
其中 `test_dir/` 表示测试用例所在的目录。这样,pytest 就会递归查找该目录下的所有测试用例并执行。
相关问题
在pytest框架下实现电子商城登录测试,并批量执行用户名密码测试用例
首先,需要安装pytest框架和selenium库。
然后,创建一个测试用例文件`test_login.py`,在文件中编写登录测试用例。可以使用pytest的fixture机制来封装登录操作,使得测试用例调用方便。
```python
import pytest
from selenium import webdriver
@pytest.fixture(scope="module")
def driver():
driver = webdriver.Chrome()
yield driver
driver.quit()
@pytest.fixture(scope="module")
def login(driver):
driver.get("http://example.com/login")
# 执行登录操作
yield
# 执行退出操作
def test_login_success(driver, login):
# 测试用例:正确的用户名和密码可以成功登录
username = "user1"
password = "password1"
# 输入用户名和密码
# ...
# 点击登录按钮
# ...
# 断言是否成功登录
# ...
def test_login_wrong_password(driver, login):
# 测试用例:错误的密码不能成功登录
username = "user2"
password = "wrong_password"
# 输入用户名和密码
# ...
# 点击登录按钮
# ...
# 断言是否提示密码错误
# ...
def test_login_wrong_username(driver, login):
# 测试用例:错误的用户名不能成功登录
username = "wrong_username"
password = "password3"
# 输入用户名和密码
# ...
# 点击登录按钮
# ...
# 断言是否提示用户名不存在
# ...
# 更多测试用例...
```
最后,可以使用pytest的参数化机制来批量执行用户名密码测试用例。可以创建一个数据文件`test_data.csv`,将用户名密码等测试数据存储在其中。
```csv
username,password
user1,password1
user2,wrong_password
wrong_username,password3
# 更多测试数据...
```
在测试用例文件中,使用pytest.mark.parametrize装饰器来指定参数化的参数,并将测试数据读取出来。
```python
import csv
import pytest
@pytest.mark.parametrize("username,password", csv.reader(open("test_data.csv")))
def test_login(driver, login, username, password):
# 输入用户名和密码
# ...
# 点击登录按钮
# ...
# 断言是否成功登录或者提示登录失败的错误信息
# ...
```
最后,运行`pytest`命令即可执行所有测试用例。在运行时,pytest会自动加载所有以`test_`开头的函数作为测试用例,同时也会执行参数化测试用例。
pytest如何批量运行多条运力
在pytest中,批量运行多条测试主要是通过使用命令行选项和插件功能来实现的。你可以一次性指定多个测试文件、模块或者单个测试用例来运行整个测试集。以下是一些常用的方式:
1. **指定测试文件或模块**:
```
$ pytest my_test_module.py another_test_module.py
```
这会并行执行两个模块中的所有测试。
2. **使用通配符匹配测试文件**:
```
$ pytest tests/test_*.py
```
匹配以"test_"开头的所有测试文件。
3. **利用`-k`选项过滤测试**:
```
$ pytest -k 'my_test_function'
```
只运行包含关键词`my_test_function`的测试。
4. **`-s`标志禁用缓存**:
如果你想确保每次修改都重新运行测试,可以加上`-s`,这会禁用pytest的缓存功能。
5. **使用`pytest-xdist`插件并行执行**:
```bash
$ pytest -n 4
```
`-n`后面的数字表示并行运行的进程数,可以加快测试速度。
6. **`pytest-of`和`pytest-parametrize`配合**:
当你需要按某种模式(如数据驱动)运行一组相关测试时,可以用它们创建测试套件。
记得在运行大量测试时监控日志,因为过多的并行可能会导致资源竞争或其他问题。
阅读全文