Как ввести параметры в Selenium RC TestSuite? - PullRequest
1 голос
/ 14 марта 2011

Мне нужно протестировать несколько сайтов, которые продают одни и те же вещи, но у них есть другой шаблон.

Поэтому я хочу запустить каждый MainTestClass с определенным входным параметром, скажем:

java -jar SeleniumServerStandalone-2.0b2.jar -port 5555 (template_id = 5)

Возможно ли это?

class MainTestCases(unittest.TestCase):
    def setUp(self):

        #self.template_id=template_id I want something like that
        self.verificationErrors = []

        self.selenium = selenium("localhost", 5555, "*chrome", "http://www.google.com/")
        time.sleep(5)
        self.selenium.start()


    def test_test1(self):
        if self.template_id==1:
        ...
        elif self.template_id==2:
        ...
    def test_test2(self):
        if self.template_id==1:
        ...
        elif self.template_id==2:
        ...
    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

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

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Попробуйте добавить метод init в MainTestCases, например так:

class MainTestCases(unittest.TestCase):

    def __init__(self, methodName, template_id):
        super(MainTestCases, self).__init__(self, methodName)
        self.template_id = templateId

    def setUp(self):
        ... and so on...

Из-за этой настройки вам нужно будет создать свой набор тестов вручную, потому что каждый тестовый случай должен бытьсоздается с помощью template_id, вот так -

def suite(template_id):
    testcasenames = unittest.defaultTestLoader.loadTestsFromTestCase(MainTestCases)
    suite = []
    for case in testcasename:
        suite.append(MainTestCases(case, template_id)
    return suite

Затем в main вместо unittest.main () выполните:

  1. Команда разбора-Строковые аргументы.Возможно, вы захотите рассмотреть модули argparse (2.7+) или optparse (2.6 и более ранние).Они мощные, но их легко начать с просмотра примеров.
  2. Создайте и запустите пакет: unittest.TextTestRunner (). Run (suite (template_id))
0 голосов
/ 02 июня 2011

Теперь я использую это решение:

  1. Создать набор тестов, который запускает тестовые случаи:

импорт unittest из полетов. Полеты, тесты, случаи, импорт. импорт системы из Tickets.FlightTemplate import FlightTemplate

def suite ():

    testSuite= unittest.TestSuite()
    testSuite.addTest(FlightsTestCases('test_test1'))


    FlightsTestCases.www_address='http://testpage.pl/'
    FlightsTestCases.flight_template=FlightTemplate.Test

    #FlightsTestCases.www_address='http://productionpage.pl/'
    #FlightsTestCases.flight_template=FlightTemplate.Production

    return testSuite


if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

изменить set_up на что-то вроде:

Класс АвиабилетыTestCases (unittest.TestCase): www_address = нет flight_template = Нет xml_report_generator = нет

def setUp(self):
    self.verificationErrors = []
    if self.www_address == None:
        self.selenium = selenium("localhost", 5555, "*chrome", "http://testpage.pl/")
    else:
        self.selenium = selenium("localhost", 5555, "*chrome", self.www_address)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...