51Testing软件测试论坛

标题: python+unittest 多用例测试执行失败的问题 [打印本页]

作者: 测试就是来开荒    时间: 2017-6-9 11:14
标题: python+unittest 多用例测试执行失败的问题
背景
自己写了一个测试框架,在多用例执行的时候每次,执行成功目录的第一个用例后,后面的用例均失败。

目录结构
  1. D:\AUTOMEDLINKER
  2. ├─.idea
  3. ├─apk
  4. ├─common
  5. ├─log
  6. ├─medcases
  7. │  ├─ChannelTest
  8. │  ├─HeadlineTest
  9. │  └─LoginTest
  10. ├─report
  11. └─screenshot
复制代码
用例运行代码
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Created by nil_mmm
  4. import unittest
  5. import HTMLTestRunner
  6. import time

  7. # 配置Case的路径
  8. case_dir = [
  9.     'LoginTest',
  10.     'ChannelTest']
  11. # 配置报告名称
  12. filename = "D:/automedlinker/report/" + time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) + ".html"
  13. # 配置报告标题
  14. report_title = 'Auto Case Report'
  15. # 配置报告描述
  16. report_description = ' '


  17. if __name__ == '__main__':
  18.     suite = unittest.TestSuite()
  19.     for cases in case_dir:
  20.         cases = unittest.defaultTestLoader.discover(cases, pattern='*Test.py', top_level_dir='medcases')
  21.         suite.addTests(cases)
  22.     fp = file(filename, 'wb')
  23.      #使用 HTMLTestRunner 配置参数,输出报告路径、报告标题、描述
  24.     runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=report_title, description=report_description)
  25.     runner.run(suite)
复制代码
test_case编写结构 附我的一个模板用例
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Created by nil_mmm
  4. import unittest
  5. import android_caps
  6. import traceback
  7. from common import Main
  8. from common import GetScreen
  9. from common import UserLogin

  10. class Case(unittest.TestCase):
  11.     def setUp(self):
  12.         self.driver = android_caps.my_driver
  13.         print '第一个用例检测'

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

  16.     def test_first(self):
  17.         try:
  18.             UserLogin.jump_session_page()
  19.             print '进入搜索界面'
  20.             Main.get_resource_id('tv_search').click()
  21.             Main.get_resource_id('et_search_action').send_keys('test')
  22.             print '搜索test'
  23.             Main.get_resource_id('tv_search').click()
  24.             Main.get_resource_id('tv_title')
  25.         except:
  26.             GetScreen.get_screenshot(self.driver,'test')
  27.             traceback.print_exc()
  28.             self.fail()
复制代码
输出报告

问题
找了好久没找到原因.因为单个用例都是可以执行的。
万分感谢提供帮助的同学.


作者: jingzizx    时间: 2017-6-9 13:09
帮顶
作者: 测试的味道    时间: 2017-6-9 14:36
可以贴一些appium的log 或者把你的setup 方法贴出来看看。
作者: 小爸爸    时间: 2017-6-9 14:36
我之前遇到一次,我把try except 当时去掉。然后试过貌似行了,好久不弄了
作者: 小皮球的故事    时间: 2017-6-9 14:37
看样appium session挂掉了,排除框架本身,用命令行或者IDE,能执行多个case成功不?
作者: 测试就是来开荒    时间: 2017-6-9 14:38
小皮球的故事 发表于 2017-6-9 14:37
看样appium session挂掉了,排除框架本身,用命令行或者IDE,能执行多个case成功不?

多个case不行
作者: 小皮球的故事    时间: 2017-6-9 14:38
测试就是来开荒 发表于 2017-6-9 14:38
多个case不行

那可能跟你使用和管理driver的方式会有一定关系,可以简化代码,缩小模型了,再看看
作者: 测试就是来开荒    时间: 2017-6-9 14:39
小皮球的故事 发表于 2017-6-9 14:38
那可能跟你使用和管理driver的方式会有一定关系,可以简化代码,缩小模型了,再看看

好的,谢谢 我再看看





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2