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)
- 我运行脚本 - >它正在连接
- 它启动“test_bookshelf_tu torial()”
- 测试通过,我想继续‘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')来定义测试优先级来管理测试订单,但要确保始终执行第一个测试以打开应用程序;)