Selenium webdriver in python: Neu-mit demselben web-browser über testcases
Python newb hier.
Ich bin versucht, wieder mit dem gleichen browser in meinem ganzen testcases.
Aber ich kann nicht herausfinden, wie pass globalen Variablen, um diese Arbeit zu machen.
Derzeit
Ich habe einen main.py das sieht dann so aus
#!C:/Python27/python.exe
import unittest
import unittest, time, re, HTMLTestRunner, cgi
import os, sys, inspect
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
global DRIVER
DRIVER = webdriver.Firefox()
# Make all subfolders available for importing
cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0]))
if cmd_folder not in sys.path:
sys.path.insert(0, cmd_folder)
# Import test cases
from setup.testcaseA import *
from setup.testcaseB import *
# serialize the testcases (grouping testcases)
suite = unittest.TestSuite() # setup new test suite
suite.addTest(unittest.makeSuite(testcaseA))
suite.addTest(unittest.makeSuite(testcaseB))
runner = HTMLTestRunner.HTMLTestRunner()
print "Content-Type: text/html\n" # header is required for displaying the website
runner.run(suite)
Und ich habe testcaseA.py Datei im setup/Ordner, die wie folgt aussieht:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re, cgi
class testcaseA(unittest.TestCase):
def setUp(self):
#get global driver variable <- DOESNT WORK!
self.driver = DRIVER
def testcaseA(self):
driver = self.driver
#Bunch of tests
def tearDown(self):
#self.driver.quit() <- Commented out, because I want to continue re-using the browser
testcaseB.py ist im Grunde genommen identisch testcaseA.py
Wenn ich main.py, bekomme ich eine Fehlermeldung:
ft1.1: Traceback (most recent call last):
Datei "C:\test\setup\testcaseA.py", line 10, in-setUp
selbst.driver = #get global variable-Treiber
NameError: global name 'TREIBER' ist nicht definiert
Irgendwelche Vorschläge?
Dank!
InformationsquelleAutor m0dE | 2012-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, erstellen Sie ein anderes Modul (ich verwende in der Regel pkg.__init__ für solche Dinge) und in diesem gibt es eine Funktion zurückgibt, die die Selen-Treiber. Rückkehr der Cache, wenn bereits vorhanden, natürlich. ZB. in mypkg/__init__.py
Und rufen aus Ihren tests mit:
Es herausgefunden. Dein Beispiel in init.py hatte, um die Rückkehr "TREIBER" am Ende.... Wie ich schon sagte, ich bin python-Anfänger 😉
Hinzugefügt return-Anweisung, um die Antwort, cheers
InformationsquelleAutor Brad M
Haben Sie eine Ausnahme, weil testcaseA.py hat keine Ahnung, was der TREIBER ist. Sie haben, um es zu importieren irgendwie. Sie können nicht importieren Sie Sie direkt aus main.py denn das Ergebnis in die zirkuläre Abhängigkeit. Die beste Lösung würde sein, die TREIBER in ein separates Modul.
Wenn Sie beginnen Ihre Reise mit Tests in Python werfen Sie einen Blick auf nosetests Bibliothek. Sie werden es nicht bereuen!
InformationsquelleAutor kijasek