Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как используя nosetests запустить конкретные тесты ?

oop
nosetests
python
Теги: #<Tag:0x00007f7b6199e560> #<Tag:0x00007f7b6199e420> #<Tag:0x00007f7b6199e2e0>

(Romanchuk Katerina) #1
Подскажите, пожалуйста, как запустить через батник конкретные тесты, а не все которые наследуются от TestCaseBase и название метода начинается с «test» .

Например D:\AUTOMATION_PROJECT\18_01_2012\Testing\test_suites\my\TestLoginMail.py
class Example1234(TestCaseBase):
    @connect
    def testLoader123(self):
       pass

class Example56789(TestCaseBase):
    @connect
    def testLoader456(self):
       pass

if __name__ == "__main__":
    suite = unittest.TestLoader().loadTestsFromName('TestLoginMail.Example1234.testLoader')
    unittest.TextTestRunner(verbosity=2).run(suite)
Если мне нужно запустить конкретный тест я использую TestLoader. И при запуске через PyDev выполняется нужный мне кейс. В данном примере это Example1234.
Для прогона тестов на линуксовых машинах я использую SH-шник , для винды – Batch file.
Как мне выполнять конкретные тесты, когда я прогоняю все через nosetests (дергаю батник)?
Перепробовала много вариантов, пока никак не получилось. 

Делаю примерно так:

..\..\..\ python\python.exe
..\..\..\ python\Scripts\nosetests-script.py
--tests=test_suites.my.TestLoginMail.Example1234.testLoader123
--with-path=..\TestAddFile 
--with-path=. -v --nocapture
Pause


Возвращает ошибку:

AttributeError: 'module' object has no attribute 'TestLoginMail'

      

(Romanchuk Katerina) #2

Уже нашла ответы на вопросы, вот хороший мануал помог:

http://gahcep.github.com/blog/2013/02/10/qa-in-python-unittest/


(Mykhailo Poliarush) #3

а зачем так сложно можно просто указать --match т.е. запуск нужного теста, который подходит под регулярные выражения

nosetests TestLoginMail.py --match=testLoader123 -v

я взял за основу этот файл 

 

import unittest
 
class Example1234(unittest.TestCase):
def testLoader123(self):
print "testLoader123"
 
class Example56789(unittest.TestCase):
def testLoader456(self):
print "testLoader456"
 
if __name__ == "__main__":
suite = unittest.TestLoader().loadTestsFromName('TestLoginMail.Example1234.testLoader123')
unittest.TextTestRunner(verbosity=2).run(suite)
 
 
и результат получился 
 
c:\>nosetests TestLoginMail.py --match=testLoader123 -v
testLoader123 (TestLoginMail.Example1234) ... ok

 


(Mykhailo Poliarush) #4

я бы посоветовал еще посмотреть в сторону nose2

там тоже много функциональности, которая возможно пригодиться

https://nose2.readthedocs.org/en/latest/


(Mykhailo Poliarush) #5

и все же, как решила проблему?


(Romanchuk Katerina) #6

Я очень запутано спросила… Это было так давно…) Спасибо за ответ!!
Моя проблема была в том, что я не знала как запустить отдельные тесты.

Вот так:
nosetests test.module
nosetests another.test:TestCase.test_method
nosetests a.test:TestCase
nosetests /path/to/test/file.py:test_function