测试框架pytest的使用,可集成AirtestIDE的测试代码

测试框架pytest的使用,可集成AirtestIDE的测试代码

一、pytest测试框架环境部署

使用测试框架的好处:

管理测试用例、提供断言方法、输出HTML测试报告。

 

1.1 pytest模板规范

  1. 测试文件以 test_开头(以_test结尾也可以)

  2. 测试类以Test开头,并且不能带有init方法

  3. 测试函数以test_开头

1.2 pytest的初识

下载

pip3 install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple

导包

import pytest

运行pytest.main()

import pytest


class  TestPytestFirst(object):
    """docstring for  TestPytestFirst"""

    def test_01(self):
        print(这是第一条用例)
        assert 1 == 1

    def test_02(self):
        print(这是第二条用例)
        assert 1 ==1

if __name__ == __main__:
    pytest.main()

控制台没有打印print() 输出,如需显示请添加以下参数:

pytest.main([‘-s‘,‘-v‘])

如果希望运行指定的测试文件,可以把文件全名放到列表list里面:

pytest.main([-s,-v,my_test.py])

1.3 pytest的执行顺序

和unittest一样用setup()和teardown()

import pytest




class  TestPytestFirst(object):
    """docstring for  TestPytestFirst"""

    # 打开浏览器
    def setup_class(self):
        print("=====setup_class()执行=====")
    # 关闭浏览器
    def teardown_class(self):
        print("=====teardown_class()执行=====")


    def test_01(self):
        print(这是第一条用例)
        assert 1 == 1

    def test_02(self):
        print(这是第二条用例)
        assert 1 ==1

    # 用例执行前的初始化
    def setup(self):
        print(这是在用例执行之前做的事)
    # 用例执行完的处理
    def teardown(self):
        print(这是在用例执行之后做的事)




if __name__ == __main__:
    pytest.main([-s,-v,myScripts_test.py])

用例默认顺序是按照什么执行?

  • 用例之间的顺序是文件之间按照ASCLL码排序,文件内的用例按照从上往下执行。

  • pytest默认按字母顺序去执行的(小写英文--->大写英文--->0-9数字)

  • setup_module->setup_class->setup_function->testcase->teardown_function->teardown_class->teardown_module

  • 可以通过第三方插件pytest-ordering实现自定义用例执行顺序

官方文档: https://pytest-ordering.readthedocs.io/en/develop/

注意:一旦设置了自定义的执行顺序,就必须得延伸@pytest.mark.run(order=1)里面的order字段

pip3 install pytest-ordering -i https://pypi.tuna.tsinghua.edu.cn/simple

应用方式:

  1. 第一个执行:@ pytest.mark.run(order=1)

  2. 第二个执行:@ pytest.mark.run(order=2)

  3. 倒数第二个执行:@ pytest.mark.run(order=-2)

  4. 最后一个执行:@ pytest.mark.run(order=-1)

代码:

测试框架pytest的使用,可集成AirtestIDE的测试代码
import pytest


class  TestPytestFirst(object):
    """docstring for  TestPytestFirst"""

    # 打开浏览器
    def setup_class(self):
        print("=====setup_class()执行=====")
    # 关闭浏览器
    def teardown_class(self):
        print("=====teardown_class()执行=====")

    @pytest.mark.last
    def test_01(self):
        print(这是order=2用例)
        assert 1 == 1
    @pytest.mark.run(order=1) 
    def test_02(self):
        print(这是order=1用例)
        assert 1 ==1

    # 用例执行前的初始化
    def setup(self):
        print(这是在用例执行之前做的事)
    # 用例执行完的处理
    def teardown(self):
        print(这是在用例执行之后做的事)




if __name__ == __main__:
    pytest.main([-s,-v,myScripts_test.py])
View Code

1.4 pytest.ini配置规则

pytest.ini

[pytest]
python_files=test_*.py *_test.py
python_classes=Test*
python_functions=test_*
 

附录

python3.x下应该改为如下方式:

import importlib
?
importlib.reload(sys)

yaml模块的使用

import yaml

#打开要读取的文件 [{} ,{}]

stream = open(‘../data/login.yaml‘,‘r‘)

#读取文件数据

data = yaml.load(stream,yaml.FullLiader)

 

测试框架pytest的使用,可集成AirtestIDE的测试代码

上一篇:Docker镜像


下一篇:图论--分层图