zoukankan      html  css  js  c++  java
  • 测试框架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)

     

    部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
  • 相关阅读:
    Antd下拉多选带勾选框
    POJ
    HDU 4281(01 背包+ 多旅行商问题)
    Codeforces Round #460 (Div. 2) D. Substring
    HDU
    POJ 2184 Cow Exhibition
    Codechef FRBSUM 解题报告
    UVA11982题解
    Suffix Array 后缀数组算法心得
    51nod1158 单调栈 个人的想法以及分析
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/15171220.html
Copyright © 2011-2022 走看看