Appium 请问 python+appium 的 uinttest 怎么加入 pytest 实现失败脚本重跑尼???纠结了一个礼拜

jierong01 · 2017年07月24日 · 最后由 陈子昂 回复于 2018年12月31日 · 2649 次阅读

先上代码

  • start.py

    if __name__ == '__main__':
    suite = unittest.TestSuite()
    for cases in case_dir:
        cases = unittest.defaultTestLoader.discover(cases, pattern='*Test.py', top_level_dir='medcases')
        suite.addTests(cases)
    fp = file(filename, 'wb')
     #使用 HTMLTestRunner 配置参数,输出报告路径、报告标题、描述
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=report_title, description=report_description)
    runner.run(suite)
    
  • app_test.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by nil_mmm
import unittest
import android_caps
import traceback
from common import Main
from common import GetScreen
from common import UserLogin
#from flaky import flaky
#import pytest

#@flaky
#@pytest.mark.usefixtures("class")
class Case(unittest.TestCase):
    def setUp(self):
        self.driver = android_caps.my_driver
        print '第一个用例检测'

    def tearDown(self):
        self.driver.quit()

    def test_first(self):
        try:
            UserLogin.jump_session_page()
            print '进入搜索界面'
            Main.get_resource_id('tv_search').click()
            Main.get_resource_id('et_search_action').send_keys('test')
            print '搜索test'
            Main.get_resource_id('tv_search').click()
            Main.get_resource_id('tv_title')
        except:
            GetScreen.get_screenshot(self.driver,'test')
            traceback.print_exc()
            self.fail()


google 了网上的资料,试过了用flaky,还有 testerhome 里面的 pytest,但是都没有成功做到失败重跑,要不就是加了对应的注解后没反应,要么就是 appium 服务挂了,请问要怎么用 pytest 结合 unittest 可以做到失败重跑???

共收到 9 条回复 时间 点赞

个人的建议是,使用 Jenkins 来帮助你完成这些事情,可以在自己的代码中加入 log 部分和截图,这样就能从最大程度上完成你的需求!

煮饭阿姨 回复

已经用了 jenkins 来自动定时调度,但是希望在跑脚本的时候,因为环境问题,或者其他原因导致失败的脚本可以自己重跑一下,另外截图后面会做,非常谢谢你哈,因为我这边的情况,要先弄这个,不知道有没有解决办法尼?

jierong01 回复

使用 pytest 可以帮助你解决此类问题

在第一次(N)故障后停止测试过程
这个是 pytest 的网站:https://docs.pytest.org/en/latest/usage.html
另外,这个哥们儿的 pytest-watch 可以完全帮助你解决这个问题https://github.com/joeyespo/pytest-watch
😊 😊

煮饭阿姨 回复

谢谢哥们,非常详细,我试试哈~😁 😁

自己想想,不要太依赖别人的想法和现有的模块. 我花了一个小时就搞定了这个事 有那么难吗? 还有别用什么 watch

Jay_ 回复

那是在实际操作的函数中 catch 异常吗?有异常重跑一下?不知道你是怎么做的?

pytest 有个 pytest-rerunfailures 的插件可以实现失败 case 重跑,只需指定 --reruns 参数即可,你可以试试

请问楼主这个问题解决了吗

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册