运行多个unittest.TestCase方法,每个方法中包含相同的随机数据

时间:2012-08-08 06:56:25

标签: python testing selenium

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

  1. 借助Selenium在网站上模拟用户输入数据
  2. 检查数据是否正确放入数据库
  3. 从所选帐户中收到电子邮件并进行解析,以检查数据是否正确
  4. 所有测试原则上都已完成,但它们不能作为包含这三个测试的整个测试套件。我尝试在 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)
    

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

1 个答案:

答案 0 :(得分: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()

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