Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行python代码时发生NameError_Python_Xlwt - Fatal编程技术网

运行python代码时发生NameError

运行python代码时发生NameError,python,xlwt,Python,Xlwt,运行下面的代码时,我遇到一个NameError。我如何解决这个问题 代码: 输出: Traceback (most recent call last): File "G:\airspan_eclipse\Excel_Gen\passfail2.py", line 9, in <module> color = (passed if passorfail in ['pass','Passed','passed'] else NameError: name 'passorfai

运行下面的代码时,我遇到一个NameError。我如何解决这个问题

代码:

输出:

Traceback (most recent call last):
  File "G:\airspan_eclipse\Excel_Gen\passfail2.py", line 9, in <module>
    color = (passed if passorfail in ['pass','Passed','passed'] else
NameError: name 'passorfail' is not defined
回溯(最近一次呼叫最后一次):
文件“G:\airspan\u eclipse\Excel\u Gen\passfail2.py”,第9行,在
颜色=(如果在['pass'、'passed'、'passed']中passor失败,则通过),否则
NameError:未定义名称“passorfail”
预期结果:


Excel单元格的颜色将根据文本进行更改,如果通过/通过/通过/通过分别表示绿色和失败/失败/失败/失败分别表示红色。

if/else行很糟糕。请完整写出,您将看到问题所在

if passorfail in ['pass','Passed','passed']:
    color = passed
elif passorfail in ['fail','Failed','failed']:
    color = failed
else:
    color = xlwt.easyxf()

现在很明显,您所指的是
passorfail
,但尚未定义它。

passorfail
未定义。此外,您试图错误地设置单元格背景颜色

以下是修复代码(
passorfail
raw\u input()
读取):

编辑:

以下是从测试结果字典生成报告的代码:

import xlwt


def generate_styles(colours):
    styles = {}
    for colour in colours:
        style = xlwt.easyxf()

        pattern = xlwt.Pattern()
        pattern.pattern = xlwt.Pattern.SOLID_PATTERN
        pattern.pattern_fore_colour = xlwt.Style.colour_map[colour]
        style.pattern = pattern

        styles[colour] = style
    return styles


def generate_report(results, name):
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('Status')

    styles = generate_styles(['green', 'red'])

    # write headers
    worksheet.write(0, 0, 'Test Name')
    worksheet.write(0, 1, 'Test Result')

    # write test results
    row = 1
    for test_name, test_result in results.iteritems():
        if test_result in ['pass', 'Passed', 'passed']:
            style = styles['green']
        elif test_result in ['fail', 'Failed', 'failed']:
            style = styles['red']
        else:
            style = None

        worksheet.write(row, 0, test_name, style=style)
        worksheet.write(row, 1, test_result, style=style)
        row += 1

    workbook.save(name)


# assuming test results is a dictionary
results = {'TC01': 'passed', 'TC02': 'failed', 'TC03': 'pass'}
generate_report(results, 'report.xls')
print "Completed"

希望能有所帮助。

您还没有在任何地方定义
passorfail
。它是字符串吗?@Haidro:passorfail值将从另一个文件获取,它将是字符串(通过/失败)。但是我有n个测试用例和相应的passorfail状态。如何修改此代码并与n个测试用例一起工作上述代码工作正常。但是我必须从另一个文件中获取“passorfail”值。我有“n”个测试用例(如TC01通过、TC02失败等)。对于“n”案例数如何修改此代码。将代码修改为从另一个文件读取
passorfail
。您的意思是在输入文件的每一行上都有“pass”或“fail”?请澄清您所说的“n”案例是什么意思。谢谢。主python脚本有像TC01、TC02……等测试案例。在执行测试案例时,它将打印“TC01 Passed”使用regexp从这个主文件中存储TC01,Passed,TC-02,Failed to变量(比如a=TC01,Status1=Passed)。我们必须从这些变量生成excel表格,分别带有背景色(绿色/红色,基于状态)的测试用例编号和测试用例状态。如果我理解正确,此excel文件生成应该是一个具有一个参数的函数,该参数将是一个字典,格式为{'TC01':'passed','TC02':'failed'}。在excel文件中,您希望有两列:“测试用例名称”和“结果”,“结果”单元格应具有适当的背景。请确认,我将编辑代码。是的,请确认。excel有两列,分别具有测试用例名称和结果。测试用例结果将有所不同。我必须根据测试结果提供背景颜色结果(通过-绿色和失败-红色)。请编辑代码。
import xlwt

with open('input.txt', 'r') as f:
    passorfail = f.read()

workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Status')

style = xlwt.easyxf()
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN

if passorfail in ['pass', 'Passed', 'passed']:
    pattern.pattern_fore_colour = xlwt.Style.colour_map['green']
elif passorfail in ['fail', 'Failed', 'failed']:
    pattern.pattern_fore_colour = xlwt.Style.colour_map['red']

style.pattern = pattern
worksheet.write_merge(6, 6, 3, 3, passorfail, style=style)

workbook.save('passfail2.xls')
print "Completed"
import xlwt


def generate_styles(colours):
    styles = {}
    for colour in colours:
        style = xlwt.easyxf()

        pattern = xlwt.Pattern()
        pattern.pattern = xlwt.Pattern.SOLID_PATTERN
        pattern.pattern_fore_colour = xlwt.Style.colour_map[colour]
        style.pattern = pattern

        styles[colour] = style
    return styles


def generate_report(results, name):
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('Status')

    styles = generate_styles(['green', 'red'])

    # write headers
    worksheet.write(0, 0, 'Test Name')
    worksheet.write(0, 1, 'Test Result')

    # write test results
    row = 1
    for test_name, test_result in results.iteritems():
        if test_result in ['pass', 'Passed', 'passed']:
            style = styles['green']
        elif test_result in ['fail', 'Failed', 'failed']:
            style = styles['red']
        else:
            style = None

        worksheet.write(row, 0, test_name, style=style)
        worksheet.write(row, 1, test_result, style=style)
        row += 1

    workbook.save(name)


# assuming test results is a dictionary
results = {'TC01': 'passed', 'TC02': 'failed', 'TC03': 'pass'}
generate_report(results, 'report.xls')
print "Completed"