Python 使用每个方法中相同的随机数据运行多个unittest.TestCase方法

Python 使用每个方法中相同的随机数据运行多个unittest.TestCase方法,python,testing,selenium,Python,Testing,Selenium,我想用Python中的Selenium RC执行测试套件。在这组测试中,我想: 借助Selenium在网站上模拟用户输入数据 检查数据是否正确放入数据库 从所选帐户获取电子邮件,并对其进行分析以检查数据是否正确 所有测试原则上都已完成,但它们不能作为包含这三个测试的整个测试套件工作。我试图在setUp方法中生成数据,但在所有测试中数据都不同。我已经了解到在每个测试执行中都会运行setUp()和tearDown()方法,所以我尝试将数据生成器移动到测试类构造函数中,但我仍然无法处理它 我的测试结构

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

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

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

    啊,好的。将为运行的每个测试方法创建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()
    

    我刚刚测试了它,并为每个测试输出了相同的失败消息。随机数据仅在导入测试模块时生成

    啊,好的。将为运行的每个测试方法创建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()
    

    我刚刚测试了它,并为每个测试输出了相同的失败消息。随机数据仅在导入测试模块时生成

    你的问题不清楚是什么问题。您说每个测试都有不同的生成数据。但是在你的init方法中你调用了一个叫做“define_random_data”的东西?它是否每次调用时都会返回随机数据?这可能是您的问题。我想为整个测试套件生成一次随机数据。生成它,通过网站输入,然后检查它是否存在于数据库和发送给客户的电子邮件中。不清楚您的问题是什么。您说每个测试都有不同的生成数据。但是在你的init方法中你调用了一个叫做“define_random_data”的东西?它是否每次调用时都会返回随机数据?这可能是您的问题。我想为整个测试套件生成一次随机数据。生成它,通过网站输入,然后检查它是否存在于数据库和发送给客户的电子邮件中。是的,这很有效。在我的例子中有点不同——我有几个变量要存储,所以我用它们创建了一个类。谢谢你的帮助。是的,很有效。在我的例子中有点不同——我有几个变量要存储,所以我用它们创建了一个类。谢谢你的帮助。