pytest+allure的使用

pytest

  • https://docs.pytest.org/en/latest/contents.html#toc
使用pytest执行用例设置 pytest+allure的使用
文章图片
image.png 编写规范 【pytest+allure的使用】1、文件以test_开头
2、类以Test开头
3、方法以test_开头
from src.calc import Calc class TestA(): def test_1(self): s = Calc() assert s.add(3, 4) == 7

参数化@pytest.mark.parametrize 1、可以直接写入固定值
2、可以读取文件进行参数化yaml、json等
yaml:http://www.ruanyifeng.com/blog/2016/07/yaml.html
json:https://docs.python.org/3.7/library/json.html
-注:使用yaml.load报错YAMLLoadWarning的处理--加上Loader=yaml.FullLoader
print(yaml.load(open("a.yaml"),Loader=yaml.FullLoader))

from src.calc import Calc import pytest class TestA():@pytest.mark.parametrize( 'a, b, c', [ (1, 2, 3), (4, 5, 9), (2, 2, 4) ] ) def test_1(self, a, b, c): s = Calc() assert s.add(a, b) == c



执行: pytest+allure的使用
文章图片
image.png 用例前置与后置处理 执行顺序:
1、setup_module 模块执行前置处理
2、setup_class 类执行前置处理
3、setup_method 用例执行前置处理
4、teardown_method 用例执行后置处理
5、teardown_class 类执行执行后置处理
6、teardown_module 模块执行后置处理
from src.calc import Calc import pytestdef setup_module(): print("module执行前数据处理")def teardown_module(): print("module执行完数据处理")class TestA():def setup_class(self): self.s = Calc() print("执行类前置动作setup_class")def teardown_class(self): print("执行类后置处理teardown_class")def setup_method(self): print("用例执行前处理")def teardown_method(self): print("用例执行后处理")@pytest.mark.parametrize( 'a, b, c', [ (1, 2, 3), (4, 5, 9), (2, 2, 4)] ) def test_1(self, a, b, c): assert self.s.add(a, b) == cdef test_2(self): assert self.s.add(1, 2) == 3

用例执行顺序控制 pytest-order:https://pytest-ordering.readthedocs.io/en/develop/
@pytest.mark.run(order=3) def test_1(self, a, b, c): assert self.s.add(a, b) == c@pytest.mark.run(order=1) def test_2(self): assert self.s.add(1, 2) == 3@pytest.mark.run(order=2) def test_3(self): assert self.s.add(1, 2) == 3

pytest+allure的使用
文章图片
image.png 使用allure输出报告 allure:https://docs.qameta.io/allure/#_pytest
安装 -python:pip install allure-pytest
-mac:brew install allure
-Windows:要安装Allure,请下载并安装Scoop,然后在Powershell中执行:scoop install allure
使用 pytest a.py --alluredir=log #log为执行结果保存位置,可使用绝对路径
allure serve log #阅读报告

pytest+allure的使用
文章图片
image.png
报告保存位置

pytest+allure的使用
文章图片
image.png
也可以使用allure generate [xml_report_path] -o [html_report_path]生成报告(需手动打开)
if __name__ == '__main__': today = time.strftime('%Y%m%d') nowtime = time.strftime('%H%M%S') xml_path = './report/' + str(today) + '/' + str(nowtime) + '/xml' report_path = './report/' + str(today) + '/' + str(nowtime) + '/report' os.system('pytest test_pytest_Calc.py --alluredir ' + xml_path) os.system('allure generate '+ xml_path + ' -o ' + report_path)

    推荐阅读