【问题标题】:How to write functional/integration tests in Selenium Python如何在 Selenium Python 中编写功能/集成测试
【发布时间】:2012-05-30 14:34:07
【问题描述】:

我是测试新手,我想

1) 测试登录

2) 创建文件夹

3) 将内容(页面)添加到文件夹中

我编写了每个测试并且它们都有效,但显然我想建立在彼此之上,例如,为了做 3,我需要先做 1,然后再做 2。为了做 2,我需要做 1 . 这是我的基本测试结构:

class TestSelenium(unittest.TestCase):
    def setUp(self):
        # Create a new instance of the Firefox driver
        self.driver = webdriver.Firefox()

    def testLogin(self):
        print '1'
        ...

    def testFolderCreation(self):
        print '2'
        ...

    def testContentCreation(self):
        print '3'
        ...

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

if __name__ == '__main__':
    unittest.main()

起初,我以为测试会按顺序运行,第二个函数会从第一个函数停止的地方继续,但我发现情况并非如此,似乎每次测试都从头开始。我也意识到它们以相反的顺序执行。我在终端中得到 3,2,1 的输出。我应该如何实现我想要的?如果我在运行我想要的函数之前调用以前的函数,我觉得它一遍又一遍地重复测试相同的东西,因为每个都是测试(例如,在testContentCreation,我会调用'testLogin'然后调用@987654323 @ 和内部testFolderCreation 调用testLogin。如果我要做更多,testLogin 会被调用多次!)。我是否应该将前面的步骤变成常规的非测试函数,并在最后一个(测试函数)中按顺序调用前面的步骤?如果我这样做,那么我猜如果任何步骤失败,最后一个失败,就会有一个大的测试功能。

关于如何编写此类测试有什么建议吗? 另外,为什么测试会以相反的顺序运行?

谢谢!

【问题讨论】:

  • 字母排序? C
  • @delnan 怎么不是单元测试?我做错了什么?
  • 他指的是它实际上并没有测试一个代码单元。您正在编写功能/集成测试。我认为您只是对执行此操作的工具利用 Python 的单元测试框架这一事实感到困惑。
  • @sr2222 哦,好的。谢谢你的解释

标签: python selenium integration-testing functional-testing


【解决方案1】:

我认为您正在看到您所看到的,因为您对unittest 所做的假设做出了一些错误的假设。每个测试用例都被假定为一个独立的实体,因此没有强加运行顺序。此外,SetUp()TearDown() 在每个个案前后运行。如果您想要全局设置/拆卸,您需要创建名为SetUpClass()TearDownClass() 的类方法。您可能还想查看TestSuite 类。更多内容:http://docs.python.org/library/unittest.html

请记住,当 unittest 库进行测试发现(反映您的测试用例类以查找要运行的测试用例)时,它本质上仅限于查看对象的 .__dict__dir() 值,它们是本质上是无序的。

【讨论】:

  • 我最终把这 3 个测试变成了测试类,在那里我可以编写更多与该类相关的测试。也感谢你的setUpClass()tearDownClass(),我也用过。
猜你喜欢
  • 1970-01-01
  • 2013-03-18
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 2010-10-05
  • 2011-04-09
  • 2014-01-07
相关资源
最近更新 更多