1

我想在 Python 中使用 Selenium RC 执行测试套件。在这组测试中,我想:

  1. 借助 Selenium 在网站上模拟用户输入数据
  2. 检查数据是否正确放入数据库
  3. 从所选帐户获取电子邮件并对其进行解析以检查数据是否正确

所有测试原则上都已完成,但它们不能作为包含这三个测试的整个测试套件工作。我尝试在setUp方法中生成数据,但在所有测试中数据都不同。我已经了解到,在每次测试执行中都会运行setUp()tearDown()方法,因此我尝试将数据生成器移动到测试类构造函数中,但我仍然无法处理它。

我的测试结构如下:

class TestClass(unittest.TestCase):
  def __init__(self, TestClass):
     unittest.TestCase.__init__(self, TestClass)
     self.define_random_data()
  def setUp(self):
    db_connection_function(self)
  def some_internal_methods(self):
    ...
  def test_website_data_input(self):
    ...
  def test_db_test(self):
    ...
  def test_email_parse(self):
    ...
  def tearDown(self):
    ...
suite = unittest.TestLoader().loadTestsFromTestCase(TestClass)
unittest.TextTestRunner(verbosity=2).run(suite)

我究竟做错了什么?在每个测试中生成的数据都是不同的,我不知道如何处理它——我试图在每个可能的地方运行这个方法,但它仍然是错误的。

4

1 回答 1

1

啊好吧。为每个运行的测试方法创建一个新的 TestClass 实例。所以你必须这样做。

import unittest
import random
random_data = random.random()

class TestClass(unittest.TestCase):
    def __init__(self, TestClass):
        unittest.TestCase.__init__(self, 'test_first')
        self.data = random_data

    def test_first(self):
        self.fail(self.data)

    def test_second(self):
        self.fail(self.data)

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

我刚刚对此进行了测试,并为每个测试打印了相同的失败消息。随机数据仅在导入测试模块时生成。

于 2012-08-08T08:32:45.120 回答