如何将参数从模块传递到unittest模块?

时间:2019-07-08 10:06:32

标签: python

我有2个文件:

test_1.py:

import unittest

class TestMe(unittest.TestCase):

   @classmethod
   def setUpClass(cls):
       cls.name = "test"
       cls.password = "1234"

   def test_upper(self):
       self.assertEqual('foo'.upper(), 'FOO')

   def test_user_pass(self):
       print(self.name)
       print(self.password)


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

test_2.py:

import unittest
import test_1
import sys

a = sys.argv

if a[1] == '2':
    suite=unittest.TestLoader().loadTestsFromModule(test_1)
    unittest.TextTestRunner(verbosity=2).run(suite)

我想将参数传递给test_1(单元模块),但我需要将此参数传递给setUpClass。 我该怎么办?

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试一下...

test_1.py:

import unittest
from test_2 import b


class TestMe(unittest.TestCase):

    e = b

    @classmethod
    def setUpClass(cls):
        cls.name = "test"
        cls.password = "1234"
        cls.parameter = cls.e

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_user_pass(self):
        print(self.name)
        print(self.password)
        print(self.parameter)


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

test_2.py:

import unittest
import test_1
import sys

a = sys.argv
b = ""

if a[1] == '2':
    b = a[1]
    suite = unittest.TestLoader().loadTestsFromModule(test_1)
    unittest.TextTestRunner(verbosity=2).run(suite)

我希望这会对您有所帮助。

答案 1 :(得分:0)

有几种方法。

最简单的选择是在所有脚本中包含以下内容。

import sys
some_arg = sys.argv[1]

您将能够访问所访问的每个文件中放入主文件中的参数。

第二种选择是将其用作函数,通常,您可以...

def build_test_class(arg):
    Class TestMe(unittest.TestCase):
        ... do stuff ...

    return TestMe

在这里,您可以将您的参数与您的班级一起使用。

但是必须有另一种方法来完成您要尝试的操作。我认为这是XY Problem