pytest+allure的使用
pytest
- https://docs.pytest.org/en/latest/contents.html#toc
文章图片
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
执行:
文章图片
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
文章图片
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 #阅读报告
文章图片
image.png
报告保存位置
文章图片
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)
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量