Appium /单元测试/ Python的 - 防止应用程序再次运行的每个测试

问题描述:

好了,请看看我的示例代码Appium /单元测试/ Python的 - 防止应用程序再次运行的每个测试

我ConnectBase类:

class ConnectBase(unittest.TestCase): 
    def setUp(self): 
     desired_caps = {} 
     desired_caps['platformName'] = 'Android' 
     desired_caps['deviceName'] = '4cfe4b59' 
     desired_caps['platformVersion'] = '5.0' 
     desired_caps['appPackage'] = 'com.xyz.bookshelf' 
     desired_caps['appActivity'] = 'com.xyz.bookshelf.MainActivity' 
     desired_caps['noReset'] = False 
     self.driver_android = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) 
     self.driver_android.implicitly_wait(30) 

我与测试主文件:

import unittest 
from connect import ConnectBase 
from main_screen import MainScreenCheck 

class MainTests(ConnectBase, MainScreenCheck): 
    with open('report.txt', 'w') as f: 
     f.write("----------Bookshelf----------\n") 

    def test_bookshelf_tutorial(self): 
     self.addToFile("Test Tutorial") 
     self.driver_android.orientation = 'LANDSCAPE' 
     super(MainTests, self).logout_screen_check() 

    def test_bookshelf_2(self): 
     self.addToFile("Test 2") 
     super(MainTests, self).login_screen_check() 

    def test_bookshelf_3(self): 
     self.addToFile("Test 3") 
     super(MainTests, self).loading_screen_check() 

    def test_bookshelf_4(self): 
     self.addToFile("Test 4") 
     super(MainTests, self).list_check() 


if __name__ == '__main__': 
    suite = unittest.TestLoader().loadTestsFromTestCase(MainTests) 
    unittest.TextTestRunner(verbosity=2).run(suite) 
  1. 我运行脚本 - >它正在连接
  2. 它启动“test_bookshelf_tu torial()”
  3. 测试通过,我想继续‘test_bookshelf_2()’,但该应用程序正在重新启动...我不得不再次去throught指南屏幕...

的问题是每个单元测试“def test_xyz(self)”应用程序正在重新启动,所以我不能使用单元测试功能来显示报告中通过的测试,因此我必须通过我在测试之前做的所有测试

我创建了我的制作测试报告的方式 - >我将每个测试结果添加到txt文件中......但是我想知道是否有可能关闭此应用重新启动并使用正常的unittest报告?

或者也许有另一种很好的方式来做自动化测试的报告?

试图使为了您的测试情况下,一些次测试取决于相互 在第一步中打开应用程序,只在最后一步将其关闭:

class MainTests(ConnectBase, TestCase): 
    def step1(self): 
     #open the application 

    def step2(self): 
     ... 

    def steps(self): 
    for name in sorted(dir(self)): 
     if name.startswith("step"): 
     yield name, getattr(self, name) 

    def test_steps(self): 
    for name, step in self.steps(): 
     try: 
     step() 
     except Exception as e: 
     self.fail("{} failed ({}: {})".format(step, type(e), e) 
  • 我建议您使用测试框架(如'TESTNG')来定义测试优先级来管理测试订单,但要确保始终执行第一个测试以打开应用程序;)