Во 2-ом случае все тесты выполняются из-за того, что объекту suite передаются все тесты из класса TestClass. Для создания определенных наборов тестов нужно использовать метод TestSuite unittest'a.
Пример из документации (
http://docs.python.o...y/unittest.html):
def suite():
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase('test_default_size'))
suite.addTest(WidgetTestCase('test_resize'))
return suite
В вашем случае это будет выглядеть примерно так:
def suite():
suite_new = unittest.TestSuite()
suite_new.addTest(TestClass('test1'))
suite_new.addTest(TestClass('test2'))
return suite_new
После вызова функции suite в переменной suite_new будет список добавленных тестов. Таким образом можно создавать различные наборы тест кейсов. Либо создать общий набор и затем закомментировать ненужные для исполнения в определенный момент тест кейсы.
Запуск с логированием:
if __name__ == "__main__":
with open('test.log','w') as logf:
unittest.TextTestRunner(verbosity=2, stream = logf).run(suite())
Если что-то не заработает, пишите, будем смотреть. Сам в данный момент пишу тесты на питоне и вопрос логирования нужно будет окончательно решить в ближайшем будущем, так как смотреть результаты в консоли не очень удобно.
Полный пример:
# -*- coding: utf-8 -*-
from selenium import webdriver
import unittest
class testsall (unittest.TestCase):
def test_open_page(self):
wd = webdriver.Firefox()
wd.maximize_window()
wd.implicitly_wait(60)
wd.get("http://ukr.net")
wd.close()
def suite():
suite1 = unittest.TestSuite()
suite1.addTest(testsall("test_open_page"))
return suite1
if __name__ == "__main__":
with open('/home/andrey/test.log','w') as logf:
unittest.TextTestRunner(verbosity=2, stream = logf).run(suite())