APP UI 自动化注意事项

多CPU运行Case  -pytest-xdist

当cases量很多时,运行时间也会变的很长,如果想缩短脚本运行的时长,就可以用多进程来运行。插件安装如下:

pip install -U pytest-xdist -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

自定义进程数运行测试用例: -n=auto(自动检测到系统的CPU核数)    -n=N(指定运行的CPU核数为N)

......if __name__ == "__main__":

    pytest.main(["-n=N"])

pytest-xdist默认是无序执行的,可以通过参数--dist=loadscope来控制顺序:

1. 将同一个模块.py下的函数和同一个测试类class下的方法来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行

2. 目前无法自定义分组,按类class分组优先于按模块module分组

Case失败重跑 - pytest-rerunfailures

在做UI测试时, 短时的网络波动会导致case运行失败, 这并非是我们期望的结果, 此时就可通过重试运行cases的方式来解决问题

插件安装如下:

pip install -U pytest-rerunfailures -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

自定义重跑次数N与重跑延迟时间M/秒

......if __name__ == "__main__":

    pytest.main(["--reruns=N", "--reruns-delay=M"])

注意事项:如果指定了用例的重新运行次数,则在命令行添加--reruns对这些用例是不会生效的 

兼容性问题:

1. 不可以和fixture装饰器一起使用: @pytest.fixture() 

2. 该插件与pytest-xdist的 --looponfail 标志不兼容

3. 该插件与核心--pdb标志不兼容

HTML测试报告 - pytest-html

pytest-HTML是一个pytest用于生成XML/HTML测试报告的插件

插件安装如下:

pip install pytest-html -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

指定HTML测试报告文件路径

......if __name__ == "__main__":

    pytest.main(["--html=report/report.html"])

上面命令生成的报告css是独立的, 分享报告的时候样式会丢失, 为了更好的分享发邮件展示报告, 可以把css样式合并到HTML里

pytest --html=report/report.html --self-contained-html

多重校验 - pytest-assume

Pytest中可用assert断言, 但一个失败后面的断言将不再执行;pytest-assume可以实现对多个断言多重校验的

插件安装如下:

pip install pytest-assume -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

代码示例:

import pytestdeftest_01(): print("=======> start test_01")

    pytest.assume(1 == 2)              # 多重断言    pytest.assume(2 == 2)

    pytest.assume(3 == 2)

    print("=======> end test_01")if __name__ == "__main__":

    pytest.main(["-s", "test_pytest_assume.py"])

重复执行测试 - pytest-repeat

测试过程中会出现一些偶现的bug, 对于这种问题我们会针对此用例反复执行多次, 最终复现出问题来; pytest-repeat插件就能起到这个作用: 重复执行测试用例

参数--count=N表示执行N次

注:将pytest的 -x 选项与pytest-repeat结合使用,以强制测试运行程序在第一次失败时停止

插件安装如下:

pip install pytest-repeat -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

代码示例:

自定义用例执行顺序 - pytest-ordering

pytest默认按字母顺序去执行的(小写英文--->大写英文--->0-9数字)

用例之间的顺序是文件之间按照ASCLL码排序,文件内的用例按照从上往下执行

setup_module->setup_claas->setup_function->testcase->teardown_function->teardown_claas->teardown_module

但可以通过第三方插件pytest-ordering实现自定义用例执行顺序

注:一旦设置了自定义的执行顺序,就必须得延伸@pytest.mark.run(order=1)里面得order字段

插件安装如下:

pip install pytest-ordering -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

示例代码如下:

若是未通过@pytest.mark.run(order=n)指定执行顺序则执行顺序是test_01->test_02->test_03

如上通过@pytest.mark.run(order=n)指定执行顺序(按test_02->test_03->test_01),运行结果如下:

方式一

1. 第一个执行:@pytest.mark.first或者@pytest.mark.run('first')

2. 第二个执行:@pytest.mark.second或者@pytest.mark.run('second')

3. 倒数第二个执行:@pytest.mark.second_to_last 或者@pytest.mark.run('second_to_last')

4. 最后一个执行:@pytest.mark.last 或者@pytest.mark.run('last')

方式二

1. 第一个执行:@pytest.mark.run(order=1)

2. 第二个执行:@pytest.mark.run(order=2)

3. 倒数第二个执行:@pytest.mark.run(order=-2)

4. 最后一个执行:@pytest.mark.run(order=-1)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,572评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,071评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,409评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,569评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,360评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,895评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,979评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,123评论 0 286
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,643评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,559评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,742评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,250评论 5 356
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,981评论 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,363评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,622评论 1 280
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,354评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,707评论 2 370

推荐阅读更多精彩内容