Я пытаюсь выполнить модульный код python, который обращается к удаленной службе. Я использую PyUnit с python 2.7.Испытание модуля Python с введенным пользователем паролем
В методе setUpClass
код предлагает ввести пароль для этой услуги. Я хочу сохранить все модульные, поэтому я создал отдельные тестовые классы для каждого тестируемого класса. Эти классы имеют доступ к одной и той же удаленной службе, и все они используют одно определение метода setUpClass
fom super class.
Моя проблема заключается в том, что я должен повторно вводить пароль несколько раз (один раз для каждого тестового класса). Мне лень. Я только хочу ввести пароль один раз для всех модульных тестов. Я мог бы избежать проблемы путем жесткого кодирования пароля в модульном тесте, но это ужасная идея. Другой вариант состоит в том, чтобы перетащить все в один массивный класс, полученный из 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
В этом примере, я должен ввести пароль дважды: один раз для класса A
и один раз для класса B
.
У кого-нибудь есть советы по безопасному способу для меня сделать одноразовый ввод пароля прямо в начале тестового прогона блока? Благодаря!
Когда я запускаю команду 'python -m unittest discovery', я дважды запрашиваю пароль. Это потому, что я определяю setUpClass() в суперклассе? Должен ли я переписать его, как ваш пример кода? – RobotNerd
@RobotNerd, Как вы получаете доступ к паролю в подклассах? – falsetru
@RobotNerd. Если вы получаете доступ к паролю в подклассах как 'self.pwd' или' TestCommon.pwd', перепишите только часть TestCommon. – falsetru