美文网首页
18.接口测试用例:定制化执行以及allure报告

18.接口测试用例:定制化执行以及allure报告

作者: 小小一颗卤蛋 | 来源:发表于2024-03-20 15:35 被阅读0次

    下载以及安装请参考:接口自动化之框架搭建:Python+request+pytest+allure

    Allure报告:能生成美观易读的报告,支持多种语言(python,java等),能快速上手
    操作步骤:
    1、生成测试结果文件(json文件)
    2、使用allure的命令生成在线报告
    官方文档:https://docs.qameta.io/allure

    1、 allure生成测试报告

    allure生成测试报告的使用步骤
    (1)修改配置文件pytest.ini:把pytest.ini配置文件中的命令行参数加上如下代码--alluredir report

    [pytest]
    addopts = -s --alluredir report  # 产生的报告文件路径
    testpaths = ./script  # 测试脚本的存放文件夹位置
    python_files = test*.py # 需要运行的脚本test开头的.py文件
    python_classes = Test*
    python_functions = Test*
    

    (2)运行pytest命令产生测试结果文件,编写好测试脚本后,在命令行中运行pytest(json文件)
    在终端窗口中输入:pytest
    (3)生成测试报告:在终端窗口中输入allure serve report 生成在线测试报告

    例:简单生成报告的过程

    import pytest 
    import allure 
    import os
    @allure.epic('项目名称') 
    @allure.feature('业务模块名称') 
    class Test100:     
      @allure.story('接口名称')    
      @allure.title('用例标题1')    
      def test_c100(self):         
        assert 1 == 2     
      @allure.story('接口名称2')     
      @allure.title('用例标题2')     
      def test_c101(self):         
        assert 1 == 1 
    
    if __name__ == '__main__':     
      pytest.main([__file__, '-sv','--alluredir','./report/report','--clean-alluredir'])     
      os.system('allure serve ./report/report')
    

    2、测试用例定制化执行

    pytest默认是按照字母顺序要执行测试用例的,但是很多接口之间存在关联关系(例如:购买商品,需要先登录)或者存在引用关系,因此我们在执行测试用例的时候,需要控制用例执行的顺序。
    pytest控制case执行顺序的插件是pytest-ordering需要安装:pip install pytest-ordering

    通过装饰器的方式来控制case的执行顺序,示例:

    import pytest
    import requests
    
    @pytest.mark.run(order=2)
    def test_baidu():
      ret=requests.get(url='http://www.baidu.com')
      print('baidu')
    @pytest.mark.run(order=1)
    def test_163():
      ret=requests.get(url='http://163.com')
      print('wangzhang')
    
    @pytest.mark.last # 执行最后一个
    def test_qq():
      ret=requests.get(url='http://www.qq.com')
      print('qq')
    @pytest.mark.run(order=3)
    def test_aiqiyi():
      ret=requests.get(url='http://163.com')
      print('aiqiyi')
    if__name__=='__main':
      pytest.main(["-s,'test_ordering.py'"])
    

    参数:
    -m 设置标签模式(手动设置)

    '-m','case1'   # 一个
    '-m','case1 or case6'  #多个
    '-m','not case1'  # 排出法
    '-m','not (case1 or case3)' #排出多个
    

    -k 匹配用例名称(可全名,也可以模糊)
    -v 运行是输出更详细的用例执行信息
    -sq 简化打印信息
    -s 输出打印信息
    -q 简化打印信息

    3、跳过测试

    skip/skipif 跳过/条件跳过:在自动化测试过程中,由于环境阻塞,功能未实现,环境等因素,需要跳过某些用例
    示例:
    1、skip--使用跳过装饰器pytest.mark.skip,还可以添加跳过的原因参数 reason

    @pytest.mark.skip(reason='no way of current testing this')
    def test_the_xxx():
      xxx
    

    2、skip--通过在测试方法执行期间跳过pytest.skip(reason=reason)一般与if分支搭配使用
    3、skipif--有条件的跳过pytest.mark.skipif装饰器代替

    import sys
    @pytest.mark.skipif(sys.version_info<(3,6),reason='requires python3.6 or higher')
    def test_function():
      xxx
    

    如果条件在收集期间评估为True,则将跳过测试函数,具体跳过的原因使用 命令行参数-rs 运行测试用例时出现在测试结果的控制台中。
    4、skip类/模块
    在类中使用skipif标记,如果判断条件为真,则该类的所有方法都跳过结果

    @pytest.mark.skipif(sys.platform=='win32',reason='dose not run on windows')
    class TestPosixCalls(object):
      def test_function():
        'will not be setup or run under win32 paltform'
    

    【注意】:强烈建议不要在使用继承的类上使用 skipif 标记。 pytest中的一个已知错误标记可能会导致超类中的意外行为。

    相关文章

      网友评论

          本文标题:18.接口测试用例:定制化执行以及allure报告

          本文链接:https://www.haomeiwen.com/subject/eurpudtx.html