使用用户输入的密码进行Python单元测试

Rob*_*erd 5 python unit-testing python-2.7 python-unittest

我正在尝试对访问远程服务的python代码进行单元测试。我在python 2.7中使用PyUnit。

在该setUpClass方法中,代码提示用户输入服务的密码。我想使所有模块保持模块化,因此我为每个要测试的类创建了单独的单元测试类。这些类都访问相同的远程服务,并且都使用setUpClass超类的方法的单个定义。

我的问题是我必须多次重新输入密码(每个测试类一次)。我很懒。我只想为所有单元测试输入一次密码。我可以通过在单元测试中对密码进行硬编码来避免此问题,但这是一个糟糕的主意。另一种选择是将所有内容都推入一个派生自的庞大类中unittest.TestCase,但由于我喜欢模块化,因此我想避免使用这条路线。

代码的结构如下:

import unittest
from getpass import getpass

class TestCommon(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        pwd = getpass()

class test_A(TestCommon):
    # ...individual unit tests for class A

class test_B(TestCommon):
    # ...individual unit tests for class B
Run Code Online (Sandbox Code Playgroud)

在此示例中,我将不得不输入两次密码:一次输入class A,一次输入class B

是否有人建议我在单元测试运行开始时就一次性输入一次安全密码?谢谢!

fal*_*tru 4

类定义执行一次。

import unittest
from getpass import getpass

class TestCommon(unittest.TestCase):
    pwd = getpass()

class test_A(TestCommon):
    def test_a(self):
        self.assertEqual(self.pwd, 'secret')

class test_B(TestCommon):
    def test_b(self):
        reversed_pwd = self.pwd[::-1]
        self.assertEqual(reversed_pwd, 'terces')
Run Code Online (Sandbox Code Playgroud)

密码可通过self.pwd或访问TestCommon.pwd