Pytest框架(fixture,配置,插件,allure)

一、Pytest的fixture

  在单元测试的组件中,主要分为测试⽤例,测试固件,测试套件,测试执⾏以及测试报告,看过我书的同学对这些应该很清晰。测试固件也是不难理解,也就是在测试⽤例执⾏前需要做的动作和测试执⾏后需要做的事情。⽐如在UI的⾃动化测试中,我们更加关注的是对⻚⾯的操作,⽽不是关⼼打开浏览器和关闭浏览器,在数据库的操作中,更加关注的是对MySQL的基本操作,⽽不怎么关⼼连接数据库和数据库断开连接这部分。所以打开浏览器和关闭浏览器,连接数据库和关闭数据库部分,可以让测试固件去⼲,测试⽤例的层⾯更加关⼼测试⽤例的执⾏结果以及断⾔结果。在pytest的测试框架中,测试固件有各种形式的表现,⽐如除了刚才说的初始化与清理外,还有它强⼤的参数化的部分。
  fixture返回值
  装饰器@pytest.fixture(),它是声明⼀个函数是fixture,如果测试函数的参数列表中包含了fixture名,那么pytest执⾏的时候,就会检测到,
并且在测试函数运⾏之前执⾏该fixture,fixture可以完成任务,也可以返回数据给测试函数。
import pytest

@pytest.fixture()
def login(username='wuya',password='admin'):
    if username=='wuya' and password=='admin':
        return True
    else:
        print('账户或者密码错误')

def test_profile(login):
     # 测试函数test_profile的形式参数就是login同时该形式参数也是Fixture函数的对象
    assert login==True

 二、Conftest.py  在工程下面创建文件conftest.py

通过conftest.py可以共享fixture,fixture可以很好的解决测试固件的案例应用,依据它的思想可以编写多个案例,再本质的说就是通过conftest.py文件来达到共享fixture。conftest.py虽然是一个Python模块的文件,但是它是不能导入的,这点需要特别的注意。

 

   测试固件的分离 如:验证腾讯文件登录信息时浏览器的打开与关闭

import pytest
from selenium import webdriver
@pytest.fixture()
def driver():
    return webdriver.Chrome()

@pytest.fixture()
def init(driver):
    driver.maximize_window()
    driver.get('https://file.qq.com/')
    # 测试步骤和断言
    yield
    driver.close()

三、pytest.ini

  在Pytest的配置文件中,除了conftest.py外,我们还可以使用pytest.ini,它是Pytest测试框架的主配置文件,可以改变Pytest默认行为,比如我们每次在执行时候带的-v输出详细的信息,以及-s打印输出详细的测试用例信息。我们在工程的根目录下创建pytest.ini的文件。

 

 配置文件的主要内容  pytest.ini.py

创建file

[pytest]
#指定执行时候的默认信息
addopts= -v -s

#注册标记
markers=
    login:执行标记为login的测试函数
    register:执行标记为register的测试函数
    logout:执行标记为logout的测试函数

#指定Pytest的最低版本号
minversion=3.0

#指定忽略执行的目录
norecursedirs=.pytest_cache

#指定测试目录
testpaths=tests

#指定测试模块搜索的规则
python_files=test_*

#指定测试类搜索的规则
python_classes=Test*

#指定测试函数搜索规则
python_functions=test_*

  注意事项:添加pytest.ini后,执行错误为:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa1 in position 52: illegal multibyte sequence

  解决思路:打开pytest.ini的文件,在右下角把utf-8切换为gbk

四、Pytest常⽤插件

  pytest单元测试框架有很丰富的插件,下⾯分别介绍这些插件的应⽤。

 (1)Pytest-sugar   Pytest-sugar在执⾏的时候显示进度条,即使有失败的也会⽴刻显示出来,安装命令为:)
         pip3 install pytest-sugar
 

 

(2)Pytest-html

  执⾏后⽣成给予html的测试报告,安装它的命令为:pip3 install pytest-html
  应⽤场景主要为:执⾏后,会在当前⽬录下⽣成 ⼀个report.html的⽂件
  python -m pytest tests/test_add.py --html=report/add.html  执行test_add.py 在当前工程下的report目录下生成名叫add.html的报告

 

 

 (3)Pytest-rerunfailures

  对执⾏失败的再次执⾏,安装的命令为:pip3 install pytest-rerunfailures

   使⽤的场景是:--reruns --N N就是重试的次数

  python -m pytest -v tests/test_add.py --reruns=2 --html=report/add.html

 

 五、下载allure软件

  安装库:pip3 install allure-pytest  搭建环境变量:D:\allure-2.7.0\bin

  查看版本:allure --version

  python -m pytest -v tests/test_add.py  --alluredir=report/result   执行test_add.py在report目录下result下生成json的文件

 

   allure generate report/result/ -o report/html --clean --->将report/result里的内容在report下生成html的目录,里面包含了html的测试报告

   allure serve report/result -->启动allure的服务,自动打开测试报告

六、pip3 install -U pytest  更新pytest

 

 

 

posted @ 2021-08-25 17:22  wuyikai  阅读(568)  评论(0编辑  收藏  举报