pytest 和allure同时运行多个py
时间: 2024-10-13 22:15:38 浏览: 24
pytest是一个流行的Python测试框架,它专注于编写简洁、易于阅读的测试代码。Allure则是用于生成测试报告的一个工具,可以提供详细的测试结果可视化。如果你想同时使用pytest和Allure来运行并报告多个Python文件的测试,你可以按照以下步骤操作:
1. 安装必要的依赖:
- `pip install pytest pytest-allure-pytest`
- 如果你还需要HTML报告,安装`allure-python-commons`和`allure-report-renderer-html`
2. 在pytest配置文件(`pytest.ini` or `setup.cfg`)中设置Allure插件:
```ini
[pytest]
plugins = allure-pytest
```
3. 使用pytest命令行运行测试,并指定输出目录:
```bash
pytest --alluredir=my_allure_report -v path/to/your/tests/
```
4. 运行结束后,Allure会自动生成HTML报告。你可以通过访问`my_allure_report`目录下的`index.html`查看测试报告。
相关问题
python+pytest+requests+allure接口自动化
### 使用 Python、pytest、requests 和 Allure 进行接口自动化测试
#### 准备工作
为了构建一个完整的接口自动化测试框架,需要安装几个必要的包。可以通过 pip 安装这些依赖项:
```bash
pip install requests pytest allure-pytest pyyaml openpyxl
```
这将确保环境中有足够的工具来编写和运行测试。
#### 测试结构设计
创建合理的文件夹结构有助于更好地管理和维护测试代码。建议采用如下目录布局[^1]:
- `./tests`:放置所有的测试脚本。
- `./data`:用于存储测试所需的数据集(可以是 JSON 文件或 Excel 表格)。
- `./config`:配置文件所在位置。
- `./reports`:保存生成的测试报告。
#### 编写测试案例
下面是一个简单的例子展示如何利用 Requests 库发起 HTTP 请求并验证响应结果:
```python
import requests
def test_get_user_info():
url = "https://api.example.com/user"
response = requests.get(url)
assert response.status_code == 200, f"Unexpected status code {response.status_code}"
user_data = response.json()
assert 'id' in user_data and isinstance(user_data['id'], int), "User ID should be an integer."
```
此函数会向指定 URL 发送 GET 请求,并检查返回的状态码以及用户信息中的特定字段是否存在且类型正确。
#### 配置 Pytest 执行命令
定义入口文件 main_run.py 来集中控制整个项目的执行流程[^2]:
```python
import os
import pytest
def run_tests():
pytest.main([
'-v',
'./tests/', # 指定要扫描的测试用例路径
'--alluredir=./results', # 设置Allure的结果输出目录
'--clean-alluredir' # 清理之前的测试记录
])
os.system('allure serve results') # 启动本地服务查看最新一次的测试报告
if __name__ == "__main__":
run_tests()
```
这段代码设置了 Pytest 的参数选项,指定了测试用例的位置、Allure 报告的存放地点,并清理旧有的测试数据;最后调用了 `os.system()` 方法启动了一个临时服务器以便即时预览 HTML 版本的测试报告。
#### 数据驱动测试 (可选)
如果希望进一步增强灵活性,则可以在测试过程中引入外部数据源。例如,在 YAML 或者 Excel 中准备一组或多组输入值及其预期输出,再通过编程方式读取它们参与实际测试过程[^3]。
对于 YAML 格式的测试数据管理,可以这样操作:
```python
import yaml
with open('./data/test_cases.yaml', encoding='utf8') as file:
cases = yaml.safe_load(file)
@pytest.mark.parametrize("input_params", cases["get_user"])
def test_with_yaml(input_params):
...
```
这里假设有一个名为 `test_cases.yaml` 的文件包含了多个不同场景下的入参组合,上述方法能够遍历每一个条目完成相应的断言逻辑。
---
pytest自动化框架,就conftest配置文件、common中间层公共方法、测试用例、数据驱动、allure、pytest、fixture、logs,写一份操作pytest测试框架使用介绍指南?
好的,下面是使用pytest测试框架的一些指南:
1. 安装pytest
使用pip安装pytest模块:
```
pip install pytest
```
2. 创建测试用例
在项目目录中创建一个名为`test_*.py`(*代表任意字符)的测试用例文件,例如:
```
# test_math.py
def test_add():
assert 1 + 1 == 2
def test_subtract():
assert 2 - 1 == 1
```
3. 运行测试用例
在命令行中进入项目目录,执行以下命令:
```
pytest
```
pytest会自动识别当前目录下的测试用例文件,并执行其中的测试用例。
4. 使用fixture
fixture是pytest中非常重要的一个概念,它可以提供一些测试用例所需要的前置操作或者后置操作。例如:
```
# conftest.py
import pytest
@pytest.fixture
def setup():
print("执行测试用例前的准备工作")
yield
print("执行测试用例后的清理工作")
```
```
# test_math.py
def test_add(setup):
assert 1 + 1 == 2
def test_subtract(setup):
assert 2 - 1 == 1
```
在测试用例中使用fixture时,需要在测试用例的参数中指定fixture的名称,例如:`def test_add(setup):`。
5. 参数化
pytest支持参数化测试,可以通过`@pytest.mark.parametrize`装饰器来实现。例如:
```
# test_math.py
import pytest
@pytest.mark.parametrize("a,b,result", [(1, 1, 2), (2, 1, 1), (0, 0, 0)])
def test_add(a, b, result):
assert a + b == result
```
6. 使用allure生成报告
pytest可以结合allure生成漂亮的测试报告。安装allure命令行工具:
```
brew install allure
```
在pytest中使用allure时,需要安装pytest-allure插件:
```
pip install pytest-allure
```
使用allure生成测试报告:
```
pytest --alluredir=./report
allure serve ./report
```
7. 编写中间层公共方法
在项目中,如果有多个测试用例需要用到同一个方法,可以将这些方法放在一个common.py中。例如:
```
# common.py
def login(username, password):
print("登录操作")
```
在测试用例中使用common.py中的方法:
```
# test_math.py
from common import login
def test_add():
login("admin", "123456")
assert 1 + 1 == 2
```
8. 使用日志记录测试过程
在测试过程中,可以使用logging模块记录日志。例如:
```
# test_math.py
import logging
def test_add():
logging.info("执行加法测试用例")
assert 1 + 1 == 2
```
可以通过设置logging的level来控制日志的输出级别。
这就是使用pytest测试框架的一些指南。希望能够对你有所帮助!
阅读全文