Python全局变量未定义 - 在类中声明

时间:2016-10-19 14:46:18

标签: python selenium testing qa

我已经看到很多关于全局变量的问题,但由于某种原因,我仍然无法让我的工作。

这是我的场景 - 我有我的个人测试用例和一个单独的python脚本,其中包含了我可以在我测试的应用程序中获得的各种错误消息的不同功能。如果其中一个验证失败,我希望函数增加一个失败变量,然后主测试脚本将检查它是通过还是失败。

class ErrorValidations:
    failures = 0
    def CheckforError1(driver):
        global failures
        try:
            if error1.is_displayed():
                failures += 1

    def CheckforError2(driver):
        global failures
        try:
            if error2.is_displayed():
                failures += 1

    def CheckforError3(driver):
        global failures
        try:
            if error3.is_displayed():
                failures += 1

这是一个经过大量编辑的示例,说明了验证的使用位置:

from functionslist import ErrorValidations


def test(driver, browser, test_state):

    _modules = driver.find_elements_by_xpath('//div[@class="navlink"]')

    for i in _modules:
        i.click()

        ErrorValidations.CheckforError1(driver)
        ErrorValidations.CheckforError2(driver)
        ErrorValidations.CheckforError3(driver)

        if ErrorValidations.failures > 0:
            driver.report.AppendToReport( i.text, "The " + i.text + "page was not able to load without errors.", "fail", "")
        else:
            driver.report.AppendToReport( i.text,  "The " + i.text + "page was able to load without errors.", "pass", "")

测试没有正确递增失败变量,我得到错误:名称'失败'没有定义,但我不确定在何处定义它。

1 个答案:

答案 0 :(得分:1)

您在ErrorValidations中声明了一个类属性'失败'而不是全局?

而不是使用全局故障尝试:

class ErrorValidations:
    failures = 0

    def CheckforError1(driver):
        try:
            if error1.is_displayed():
                ErrorValidations.failures += 1

真正的全局将在类

之外声明