Appium/Unittest/Python防止应用程序在每次测试时再次运行

2024-10-03 15:21:14 发布

您现在位置: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)

以及我的主要测试文件:

^{pr2}$
  1. 我运行脚本->;它正在连接
  2. 它启动“test_bookshelf_tutorial()”
  3. 测试通过,我想继续“Test_bookshelf_2()”,但应用程序正在重新启动。。。我还要再看一遍教程屏幕。。。在

问题是,每个unittest“def test xyz(self)”应用程序都在重新启动,所以我不能使用unittest函数在report becouse中显示通过的测试,每次测试我都必须完成之前在测试中所做的一切

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

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


Tags: 文件testgtselfcom应用程序defdriver
1条回答
网友
1楼 · 发布于 2024-10-03 15:21:14

试着对你的测试用例下订单,有时候测试是相互依赖的 在第一步中,打开应用程序并仅在最后一步关闭它:

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'这样的测试框架来定义测试优先级来管理测试顺序,但是要确保总是执行第一个测试来打开应用程序;)

相关问题 更多 >