如何在所有测试方法中访问值?

时间:2014-11-11 07:33:45

标签: python unit-testing selenium selenium-webdriver

广义情景如下:

import unittest

class Test(unittest.TestCase):

    string1 = None
    def test1(self):
        self.string1 = "ValueAssignedFromMethod1"
        print "Test1 :"
        print self.string1

    def test2(self):
        print "\nTest 2 :" 
        print self.string1

if __name__ == "__main__":

        unittest.main()

上述代码的输出如下:

Test1 :
ValueAssignedFromMethod1

Test 2 :
None

如何在所有方法中使用相同的“string1”变量&如果在一种方法中改变了值,它也应该在其他方法中可用吗?

在我的项目中,我有以下场景:[使用Python + Selenium Webdriver +页面对象模式+ UnitTest库]

class Test(unittest.TestCase):


    def redirectToFalconHostUI(self):
        #Start GOOGLE CHROME Browser
        self.browser = webdriver.Chrome(executable_path='E:\\chromedriver.exe')

        #Navigate to Website URL
        Site_Home = Home(self.browser)
        Site_Home.navigate()


    def testloginToWebsite(self):
        #Get Logged in the Falcon Web UI
        loginPage = Site_Home.getLoginForm()
        loginPage.enter_email(SINGLE_LOGIN_USERNAME)
        loginPage.enter_password(SINGLE_LOGIN_PASSWORD)
        Profile_Home = loginPage.get_logged_into_Site()

    def testProfilePageSection(self):
        Profile_home.go_to_Section1()

如何在所有下一个unittest方法中获取Browser的Webdriver的当前状态。

在一种方法中设置的页面对象在下一个方法中不可用。

2 个答案:

答案 0 :(得分:1)

setUp方法分配变量。这将在每个测试用例运行之前进行初始化。

import unittest

class Test(unittest.TestCase):

    def setUp(self):
        self.string1 = "ValueAssignedFromMethod1"

    def test1(self):
        print "Test1 :"
        print self.string1

    def test2(self):
        print "\nTest 2 :" 
        print self.string1

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

如果您希望在整个测试套件中完成一次工作,那么您可以使用setUpClass。您可以将您感兴趣的成员分配给该课程,并且可以跨方法访问这些成员。

答案 1 :(得分:0)

class Test(unittest.TestCase):
    Site_Home = None
    Profile_Home = None

    def redirectToFalconHostUI(self):
        #Start GOOGLE CHROME Browser
        self.browser = webdriver.Chrome(executable_path='E:\\chromedriver.exe')

        #Navigate to Website URL
        Test.Site_Home = Home(self.browser)
        Test.Site_Home.navigate()


    def testloginToWebsite(self):
        #Get Logged in the Falcon Web UI
        loginPage = Test.Site_Home.getLoginForm()
        loginPage.enter_email(SINGLE_LOGIN_USERNAME)
        loginPage.enter_password(SINGLE_LOGIN_PASSWORD)
        Test.Profile_Home = loginPage.get_logged_into_Site()

    def testProfilePageSection(self):
        Test.Profile_home.go_to_Section1()

通过具有类级别对象,可以在Same类中的所有方法中访问它。 https://docs.python.org/2/tutorial/classes.html