C#方法没有打印正确的值
本文关键字:打印 方法 | 更新日期: 2023-09-27 17:58:58
下面有两个方法General和SearchTab。当我查看我的报告文件时,我看到General Methods的值为:
测试名称:
TestMachine:Maya
测试用户:管理员
测试时间:2011年6月13日12:02
测试状态:失败
TestExpectedResult:
测试实际结果:
测试注释:
TestName、TestExpectedResult、TestActualResult和TestComments为空,但它们应该具有值:
测试名称:测试1:通用,
TestExpectedResult:应该存在"主页"选项卡,
TestActualResult:主页选项卡已找到
TestComments:主页选项卡找到
此外,TestStatus应该是PASS而不是FAIL。
看起来,即使我在方法General中重新分配了这些变量的值,它们仍然在构造函数中打印分配给它们的值。
第二个方法SearchTab也存在同样的问题。
请帮我解决这个问题。
namespace Automation
{
[TestClass]
public class FunctionalTest
{
public ISelenium Sel;
public StringBuilder Err;
public string Report = "C:'Report.XLS";
public string[] arrTestResults = new string[8];
public string TestName;
public string TestMachine;
public string TestUser;
public string TestTime;
public string TestStatus;
public string TestExpectedResult;
public string TestActualResult;
public string TestComments;
// Constructor
public FunctionalTest()
{
TestName = arrTestResults[0];
TestMachine = arrTestResults[1] = System.Environment.MachineName.ToString();
TestUser = arrTestResults[2] = System.Environment.UserName.ToString();
TestTime = arrTestResults[3] = System.DateTime.Now.ToString();
TestStatus = arrTestResults[4] = "FAIL";
TestExpectedResult = arrTestResults[5];
TestActualResult = arrTestResults[6];
TestComments = arrTestResults[7];
}
public void WriteReport(string[] arrResults)
{
int iLastRow, iCnt1;
if (File.Exists(Report))
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;
Object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkBook = xlApp.Workbooks.Open(Report, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "'t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
range = xlWorkSheet.UsedRange;
iLastRow = range.Rows.Count;
for (iCnt1 = 1; iCnt1 < 9; iCnt1++)
{
xlWorkSheet.Cells[iLastRow + 1, iCnt1] = arrResults[iCnt1 - 1];
}
xlWorkBook.Save();
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
}
else
{
Console.WriteLine("Report File " + Report + " does not exist");
}
}
[TestMethod]
public void General()
{
TestName = "Test 1: General";
TestExpectedResult = "'Home' tab should be present";
if (Sel.IsElementPresent("TAB_Home")))
{
TestStatus = "PASS";
TestActualResult = "Home tab found";
TestComments = TestActualResult;
}
else
{
TestActualResult = "Home tab not found";
TestComments = TestActualResult;
}
//Write to report
WriteReport(arrTestResults);
}
}
[TestMethod]
public void SearchTab()
{
TestName = "Test 2: Search Tab";
TestExpectedResult = "Search tab should be present";
// Assigning TestStatus to FAIL because TestStatus is PASS right now from the previous test method
TestStatus = "FAIL";
if (Sel.IsElementPresent("TAB_Search"))
{
sActual = "Search Tab found";
arrTestResults[7] = sActual;
TestComments = TestActualResult;
TestStatus = "PASS";
}
else
{
TestActualResult = "Search tab not found";
TestComments = TestActualResult;
}
//Write to report
WriteReport(arrTestResults);
}
}
}
初始化创建初始数组值,并且从不更改它们。您正在更改字段值:
string TestName = "test";
TestName = arrTestResults[0];
// At this point, changing TestName does not affect arrTestResults[0]
此外,您不应该使用公共字段。相反,您应该使用属性。
public string TestName { get; set; } // auto-property
或
private string _testName = string.Empty;
public string TestName { get { return _testName; } set { _testName = value; }}
您要么需要为更改数组的属性编写一个setter,要么更好地在报告中使用适当的字段/属性:
xlWorkSheet.Cells[iLastRow + 1, 0] = TestName;
当然,这也可以重构得更好。
不要在构造函数或General方法中赋值。根据您的代码,General似乎是一个测试用例。如果它是测试用例,那么不要期望General应该首先被调用,因为您将其定义为第一个方法。
使用SetupTest()设置该值。请注意,SetupTest()不是一个测试用例,但它将在执行每个测试用例之前被调用。
不要打印,提高警惕。。
[SetUp]
public void SetupTest()
{
...your initialization code...
}