원격 서비스에 액세스하는 Python 코드 테스트 단원을 테스트하려고합니다. Python 2.7에서 PyUnit을 사용하고 있습니다.사용자 입력 암호로 Python 유닛 테스트
setUpClass
메서드에서 코드는 사용자에게 서비스의 암호를 입력하라는 메시지를 표시합니다. 모든 것을 모듈화하고 싶기 때문에 테스트 할 각 클래스에 대해 별도의 단위 테스트 클래스를 만들었습니다. 이러한 클래스는 모두 동일한 원격 서비스에 액세스하며 모두 수퍼 클래스에 대한 setUpClass
메서드의 단일 정의를 사용합니다.
제 문제는 암호를 여러 번 다시 입력해야한다는 것입니다 (모든 테스트 클래스마다 한 번씩). 내가 게으른. 모든 단위 테스트에 대해 한 번만 비밀번호를 입력하고 싶습니다. 유닛 테스트에서 비밀번호를 하드 코딩하여이 문제를 피할 수는 있지만, 그건 끔찍한 생각입니다. 다른 옵션은 모든것을 unittest.TestCase
에서 파생 된 하나의 거대한 클래스로 밀어 넣는 것입니다.하지만 모듈화를 좋아하기 때문에 그 경로를 피하기를 원합니다.
여기에 코드가 구조화되는 방법은 다음과 같습니다 번 클래스 A
과 한 번 클래스 B
을 위해 :
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
, 내가 두 번 암호를 입력해야합니다.
단원 테스트를 시작할 때 일회용 암호 입력을 안전하게 할 수있는 방법에 대한 조언이 있으십니까? 감사!
'python -m unittest discover' 명령을 실행하면 암호를 두 번 묻는 메시지가 나타납니다. 수퍼 클래스에서 setUpClass()를 정의했기 때문입니까? 샘플 코드처럼 다시 작성해야합니까? – RobotNerd
@RobotNerd, 하위 클래스의 비밀번호는 어떻게 접근합니까? – falsetru
@RobotNerd, 하위 클래스에서'self.pwd' 또는'TestCommon.pwd'로 패스워드에 접근하면, TestCommon 부분 만 다시 작성합니다. – falsetru