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

2024-03-20  本文已影响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中的一个已知错误标记可能会导致超类中的意外行为。

上一篇下一篇

猜你喜欢

热点阅读