pytest+allure的使用

pytest

  • https://docs.pytest.org/en/latest/contents.html#toc

使用pytest执行用例设置

pytest+allure的使用_第1张图片
image.png

编写规范

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的使用_第2张图片
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 pytest

def 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) == c

    def 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的使用_第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 #阅读报告


pytest+allure的使用_第4张图片
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)

你可能感兴趣的:(pytest+allure的使用)