Pytest高级进阶之Fixture
    
            
摘要:一. fixture介绍 fixture是pytest的一个闪光点,pytest要精通怎么能不学习fixture呢?跟着我一起深入学习fixture吧。其实unittest和nose都支持fixture,但是pytest做得更炫。 fixture是pytest特有的功能,它用pytest.fixtu
        
阅读全文
 
        
            
    unittest 和 pytest 对比
    
            
摘要:一、用例编写规则 1.unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则: (1)测试文件必须先import unittest (2)测试类必须继承
        
阅读全文
 
        
            
    重复执行用例(pytest-repeat)
    
            
摘要:前言 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,或者针对某个模块的用例重复执行多次。 pytest-repeat pytest-repeat是pyte
        
阅读全文
 
        
            
    pytest分布式执行(pytest-xdist)
    
            
摘要:前言 平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟。如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候,我们会用测试人力成本换取时间成本,这个时候多找个小伙伴把任务分成2部分,于是时间缩减一半。如果是十个人一起执行,1000个用例理论上只需100分钟就
        
阅读全文
 
        
            
    运行上次失败用例(--lf 和 --ff)
    
            
摘要:前言 “80%的bug集中在20%的模块,越是容易出现bug的模块,bug是越改越多“平常我们做手工测试的时候,比如用100个用例需要执行,其中10个用例失败了,当开发修复完bug后,我们一般是重点测上次失败的用例。那么自动化测试也一样,当用例特别多时,为了节省时间,第一次部分用例失败了,修复完之后
        
阅读全文
 
        
            
    conftest.py作用范围
    
            
摘要:前言 一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用。在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录生效。 conftest层级关系 在web_conf_py项目工程下建两个子项目baidu、blog
        
阅读全文
 
        
            
    fixture作用范围
    
            
摘要:ixture里面有个scope参数可以控制fixture的作用范围:session > module > class > function function 每一个函数或方法都会调用 class 每一个类调用一次,一个类可以有多个方法 module,每一个.py文件调用一次,该文件内又有多个func
        
阅读全文
 
        
            
    使用多个fixture和fixture直接互相调用
    
            
摘要:使用多个fixture 如果用例需要用到多个fixture的返回数据,fixture也可以return一个元组、list或字典,然后从里面取出对应数据。 当然也可以分开定义成多个fixture,然后test_用例传多个fixture参数 fixture与fixture互相调用 fixture与fix
        
阅读全文
 
        
            
    fixture详细介绍-作为参数传入,error和failed区别
    
            
摘要:前言 fixture是pytest的核心功能,也是亮点功能,熟练掌握fixture的使用方法,pytest用起来才会得心应手! fixture简介 fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显
        
阅读全文
 
        
            
    配置文件pytest.ini
    
            
摘要:前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。 ini配置文件 pytest里面有些文件是非test文件 pytest.ini pytest的主配置文件,可以改变pytest的默认行为 conftest.py 
        
阅读全文
 
        
            
    fixture之autouse=True
    
            
摘要:平常写自动化用例会写一些前置的fixture操作,用例需要用到就直接传该函数的参数名称就行了。当用例很多的时候,每次都传这个参数,会比较麻烦。fixture里面有个参数autouse,默认是Fasle没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了 调用fix
        
阅读全文
 
        
            
    用例a失败,跳过测试用例b和c并标记失败xfail
    
            
摘要:前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操作c是第三个用例,很明显三个用例都会走到登录。如果登录都失败了,那后面2个用例就没测试必要了,直接跳
        
阅读全文
 
        
            
    自定义标记mark
    
            
摘要:前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行。app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是ios用例,哪些是android的,运行代码时候指定mark名称运行就可以 mark标记 1.以下用例
        
阅读全文
 
        
            
    allure2生成html报告
    
            
摘要:前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。 环境准备 1.python3.6 2.windows环境 3.pycharm 4.pytest-allure-ad
        
阅读全文
 
        
            
    跳过用例skip
    
            
摘要:1、装饰器,放在函数前面,跳过用例 @pytest.mark.skip(reason="no way of currently testing this") 2、放在函数里面,只控制某条用例 3、跳过某个模块 @pytest.importskip("模块名") 4、根据版本去控制跳过某个模块 @py
        
阅读全文
 
        
            
    预期结果 参数化parametrize
    
            
摘要:1、pytest.mark.parametrize装饰器可以实现测试用例参数化。 语法:1). @pytest.mark.parametrize("参数名",["01_值1","02_值2"])2). @pytest.mark.parametrize("参1,参2",[("01_参1的值","01_
        
阅读全文
 
        
            
    用例失败重新运行
    
            
摘要:1、失败重跑需要依赖pytest-rerunfailures插件,安装:pip install pytest-rerunfailures 2、命令行加个参数--reruns就行了,运行: py.test --reruns 1 --html=report.html --self-contained-h
        
阅读全文
 
        
            
    pytest启动浏览器,失败用例截图
    
            
摘要:1、conftest.py 2、test_01.py 3、test_03.py 4、cmd运行用例:pytest --html=report.html --self-contained-html 5、运行结果:
        
阅读全文
 
        
            
    pytest的HTML
    
            
摘要:安装html: 1.github上源码地址【https://github.com/pytest-dev/pytest-html】 2.pip安装 pip install pytest-html 3.cmd执行用例,生成报告 pytest --html=report.html 4.上面方法生成的报告,
        
阅读全文
 
        
            
    pytest 的 yield
    
            
摘要:前言:1、当 pytest.fixture(scope="module") 时,pytest的yieId 类似unittest的teartownclass 2、当 pytest.fixture(scope="function") 时,pytest的yieId 类似unittest的teartown 
        
阅读全文