2016-05-27 8 views
-1

Ich habe einen Selentest wie unten gezeigt. Ich möchte diesen Test aus einer anderen Python-Datei mit zusätzlichen Parametern in Test übergeben.Aufruf Selen Test mit Parametern aus einer anderen Python-Datei

from selenium import webdriver 
import unittest, time, re 

class Mytest(unittest.TestCase): 
    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.verificationErrors = [] 
     self.accept_next_alert = True 

    def my_test(self): 
     driver = self.driver 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 

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

Ich sah einige ähnliche Fragen, aber keiner meiner genauen Anforderung

Ich weiß zu beantworten, wie dieser Test mit Argumenten über die Eingabeaufforderung aufrufen Ich möchte jedoch nicht subprocess verwenden.

Ich weiß, wie ohne parameters.However i Parameter

+0

Sie können die Lösung hier ausprobieren [Python-Testfälle dynamisch generieren] (http://eli.thegreenplace.net/2014/04/02/dynamically-generating-python-test-cases) und das [run-tests- in-another-modul] (http://stackoverflow.com/questions/15334042/python-unittesting-run-tests-in-an-other-module) – qvpham

+0

@julivico diese URL gibt 404! – jithin

+0

Ich kann ohne Probleme auf sie zugreifen. Klicken Sie nur auf sie – qvpham

Antwort

0

Hier ist das Tutorial übergeben müssen Test von einem anderen Python-Datei aufrufen, wie Testcase mit dem Parameter zu erstellen: Dynamically generating Python test cases. Hier ist eine Antwort, wie eine Testcase aus anderen Datei aufzurufen: Python unittesting: run tests in another module

Jetzt zeige ich Ihnen mein Beispiel:

Die Struktur meines Beispiel ist:

maintest.py 
mytest 
     |-- __init__.py 
     |-- test1.py 

test1.py

from selenium import webdriver 
import unittest 

class MyTest(unittest.TestCase): 
    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.verificationErrors = [] 
     self.accept_next_alert = True 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 

def my_test_generator(a, b): 
    def my_test(self): 
     print "run test" 
     self.assertEqual(a, b, "a != b") 
    return my_test 

def suite(a, b): 
    _suite = unittest.TestSuite() 
    test_func = my_test_generator(a, b) 
    setattr(MyTest, 'my_test', test_func) 
    _suite.addTest(unittest.makeSuite(MyTest, 'my_test')) 
    return _suite 

Die Funktion my_test_generator wird verwendet, um eine Testfunktion wi zu erstellen th Parameter. Sie müssen eine TestSuite erstellen, um sie aus einer anderen Datei aufzurufen. Sehr wichtig: In der Zeile _suite.addTest(unittest.makeSuite(MyTest, 'my_test'))my_test ist der gleiche Name im Generator my_test_generator. Sie haben also eine Funktion, um TestSuite mit Parametern zu erstellen. Und Sie können es aus einer anderen Datei aufrufen, um Ihren Test zu starten.

maintest.py

import unittest 
from mytest import test1 


def suite(): 
    _suite = unittest.TestSuite() 
    _suite.addTest(test1.suite(2, 3)) 

    return _suite 

if __name__ == '__main__': 
    unittest.main(defaultTest='suite') 

Sie geben die Parameter durch die Suite von Untertest aufrufen.

Verwandte Themen