测试框架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)

代码:

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)

 

部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
原文地址:https://www.cnblogs.com/MarlonKang/p/15171220.html