zoukankan      html  css  js  c++  java
  • Pytest框架运行方式(主函数、命令行、配置、执行顺序)

    一、pytest单元测试框架

    (1)什么是单元测试框架

    单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。

    (2)单元测试框架

    java: junit 和testng

    python: unittest 和 pytest

    (3)单元测试框架主要做什么?

    1. 测试发现:从多个文件里面去找到我们测试用例

    2. 测试执行:按照一定的顺序和规则去执行。并生成结果

    3. 测试判断:通过断言判断预期结果和实际结果的差异

    4. 测试报告:统计测试进度,耗时,通过率,生成测试报告

    二、单元测试框架和自动化测试框架有什么关系?

    (1)什么是自动化测试框架

    (2)作用

    1. 提高测试效率,降低维护成本

    2. 减少人工干预,提高测试的准确性,增加代码的重用性

    3. 核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试

    单元测试框架:只是自动化测试框架中的组成部分之一

    pom设计模式:只是自动化测试框架中的组成部分之一

    数据驱动

    关键字驱动

    全局配置文件的封装

    日志监控

    selenium,request二次封装

    断言

    报告邮件

    等等。。。。。

     

    三、pytest简介

    1. pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,容易上手。

    2. pytest可能和selenium,requests,appium结合实现web自动化,接口自动化,app自动化

    3. pytest可以实现测试用例的跳过以及retuns失败用例重试。

    4. pytest可以的allure生成非常完美的测试报告

    5. pytest可以和Jenkins持续集成。

    6. pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作

    pytest
    pytest-xdist    测试用例分布执行,多cpu分发
    pytest-ordering  用于改变测试用例的执行顺序
    pytest-rerunfailures    用例失败后重跑
    pytest-html    生成html格式的自动化测试报告
    allure-pytest    用于生成美观的测试报告
    将以上这些放到requirements.txt中,通过 pip install -r requirements.txt安装
     

    四、使用pytest,默认的测试用例的规则以及基础应用

    1. 模块名必须以test_开头或者_test结尾

    2. 测试类必须以Test开头,并且不能用init方法

    3. 测试方法必须以test开头

     

    五、pytest测试用例的运行方式

    1. 主函数模式

        (1)运行所有:pytest.main()

                (2)指定模块:pytest.main(['-vs','test_login.py'])

                (3)指定目录:pytest.main(['-vs','./interface_testcase'])

                (4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

    pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func']) 
    pytest.main('-vs','./interface_testcase/test_interface.py::Testinterface::test_03_zhiliao')

          2. 命令行模式:

            (1)运行所有:pytest

              (2)指定模块:pytest -vs test_login.py

              (3)指定目录:pytest -vs ./interface_testcase

              (4) 指定目录: pytest -vs ./interface_testcase/test_interface.py::test_04_func 

    参数详解:

    -s : 表示输出调试信息,包括print打印的信息

    -v: 显示更详细的信息

    -vs : 这两个参数可以一起用

    -n : 支持多线程或者分布式运行测试用例

    如pytest -vs ./testcase/test_login.py -n 2 (指两个线程)

    -reruns NUM :失败用例重跑

    -x : 表示只要一个用例报错,那么测试停止

    --maxfail=2 出现两个用例失败就停止

    -k : 根据测试用例的部分字符串指定测试用例。

    如:pytest -vs ./testcase -k "ao" (指只运行以关键字ao的用例)

    --html ./report/report.html : 生成html的测试报告

     

    3. 通过读取pytest.init这个文件字是pytest单元测试框架的核心配置文件

    (1)位置:一般放在项目的根目录

    (2)编码:必须是ANSI,可以使用编辑器如notepad++修改编码格式

    (3)作用:改变pytest默认的行为

    (4)运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件

    [pytest]
    addopts = -vs      #命令行的参数,用空格分隔
    testpaths = ./testcase      #测试用例的路径
    python_files = test_*py    #模块名的规则
    python_classes = Test*    #类名的规则
    python_functions = test   #方法名的规则

    六、pytest执行测试用例的顺序是怎样的呢?

    unittest: ascll的大小来绝定执行的顺序
    pytest: 默认从上到下
    改变默认的执行顺序: 使用mark标记
    @pytest.mark.run(order=3)

    七、如果分组执行(冒烟,分模块执行,分接口和web执行)

    smoke: 冒烟用例,分布在各个模块里面
    pytest -m "smoke"
    pytest -m "smoke or usermanager or prodectmanage"

    八、pytest跳过测试用例

    1. 无条件跳过
    @pytest.mark.skip(reason="就是要跳过你,没原因")
             2.有条件跳过
    @pytest.mark.skipif(age>=18,reason='已成年的跳过')
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
  • 相关阅读:
    WebClient与WebRequest差异
    自定义控件的构建(4)
    自定义控件的构建(6)
    Sliverlight中PagedCollectionView的总结
    自定义控件的构建(13)
    自定义控件的构建(8)
    Silverlight中的主题设置
    自定义控件的构建(12)
    自定义控件的构建(7)
    谈谈学完Asp.net 中的自定义控件后的感受
  • 原文地址:https://www.cnblogs.com/deeptester-vv/p/14844205.html
Copyright © 2011-2022 走看看