pytest(2)-简单使用

pytst框架实现一些前后置(固件,夹具)的处理,常用三种

setup/teardown,setup_calss/teardown_class

为什么需要这些功能
比如:web自动化执行之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器?

import pytest

class TestDemo:

    #这是在所有的用例执行只执行一次
    def setup_class(self):
        print("在每个类执行前的初始化功的工作,比如创建日志对象,创建数据库连接,创建接口请求对象")

    #在每个用例之前执行一次
    def setup(self):
        print("在执行用例执行前执行")

    def test_019(self):
        print("用例1")

    def test_020(self):
        print("用例2")

    def teardown(self):
        print("在执行测试用例之后的扫尾的代码:如关闭浏览器")

    #只执行一次
    def  teardown_class(self):
        print("在每个类执行后的扫尾的工作,比如:销毁日志对象,销毁数据库的链接,销毁接口的请求参数")

if __name__ == '__main__':
    pytest.main(["-vs"])

注意:和unittest不一样,全是小写

使用@pytest.fixture()装饰器来实现部分用例前后置

@pytest.fixture(scope="",params="",autouse="",ids="",name="")
  • scope : 表示的是被@pytest.fixture装饰的方法的作用域。
    • function(默认),表示在每个函数执行时执行
    • class,表示在类执行前执行
    • module,作用域在模块
    • packge/session,
  • params : 参数化(支持,list[],元祖(),字典列表[{},{},{]],字典元祖({},{},{}}))
    参数化固定写法
@pytest.fixture(scope="class",params=GetYaml(path).getData("FileName"),autouse=True)
def fixtureDemo(request):
    print("fixtureDemo-----------"+request.param)
    return  request.param
@pytest.fixture(scope="class",params=GetYaml(path).getData("FileName"),autouse=True)
def fixtureDemo(request):
    print("前置")
    yield request.param #return和yield都表示返回的意思,但是return的后面不能有代码,yield返回后,后面可以接代码
    print("后置")
  • autouse=True : 自动执行,默认False
  • ids : 当使用params参数化,给每一个值设置一个变量。意义不大
  • nama : 给表示的被@pytest.fixture表姐的方法取一个别名,
    当取了别名之后,那么原来的名称就不用了

通过conftest.py和pytest.fixture() 结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局)

  • conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改
  • 用处可以在不同的py文件中使用同一个fixture函数
  • 原则上,conftest.py需要和运行的用例放到一个放到同一层,并且不需要做任何的imprt导入操作
    image
    总结:
    setup/teardown,setup_class/teardown_class 它作用于所有用例或者所有类的
    @pytest.fixtrue() 他的作用即可以部分也可以全部签前后置
    conftest.py和@pytest.fixtrue()结合使用,作用于全局的前后置

断言

assert
assert 1==2

pytest结合allure-pytest插件生成allure测试报告

pytest-html
allure-pytest

  • 下载,解压,配置path路径
    https://github.com/allure-framework/allure2/releases
    path路径配置
    问题:dos可以验证但是pycharm验证失败,怎么办,重启pycharm
    验证是否安装完成
    allure --version
    image
  • 生成json格式的临时报告
    在pytest.ini,addopts 加入:
--alluredir ./temp
  • 生成alluredir报告
os.system("allure generate ./temp -o  ./report --clean")

allure generate 命令,固定的
./temp 临时的json格式报告的路径
-o 输出output
./report 生成的allure报告的路径
--clean 清空./report路径原有的报告

--alluredir ./temp  allure generate ./temp -o  ./report --clean
posted @ 2021-08-15 14:06  咸鱼豆腐  阅读(79)  评论(0)    收藏  举报