我使用MsTests和数据驱动的方法进行测试。(Excel是用于测试的数据存储)
测试结果不提供任何有关测试数据的信息。例如:
结果看起来像:testname(数据行5)。我也不清楚。
如何定制输出测试结果?例如testname(测试数据(单词、数字或行名))
我只找到了一个解决方案:
我有我的数据。包含1000行的xlsx文件。简单的逻辑:“A”列=1,“B”列=A*2。
第5行、第6行、第7行和第11行、第12行、第13行的参赛者为零,代表失败的结果。
我的测试源代码:
public TestContext TestContext { get; set; }
[TestMethod]
[DataSource("System.Data.Odbc", "Dsn=Excel Files;dbq=|DataDirectory|\\TestData\\MyData.xlsx;", "TestDataSheet$", DataAccessMethod.Sequential)]
public void ExcelDataSource1000Items()
{
var errorMessage = "Passed";
int valueA = Convert.ToInt32(TestContext.DataRow["valueA"]);
int valueB = Convert.ToInt32(TestContext.DataRow["valueB"]);
try
{
Assert.AreEqual(valueA * 2 + 2, valueB);
}
catch (Exception exception)
{
errorMessage = exception.Message;
}
TestContext.WriteLine(string.Format("valueA: {0}, valueB: {1}, AssertResult: {2}", valueA, valueB, errorMessage));
}
从MsTest命令行(用于生成*.trx文件)执行测试后,使用参数:/testcontainer、/testsettings、/resultsfile我们生成*。带有测试结果的trx文件。
如果我们打开这个*。trx文件,我们可以看到短信:
<Results>
<UnitTestResult executionId="cfc325a7-647f-4ef3-bb08-777f7bb3ca37" testId="1dbff80d-1f74-5ea7-35fa-f2ecd1f9b9e4" testName="ExcelDataSource1000Items" computerName="AMDX6" duration="00:00:00.5764248" startTime="2012-09-06T03:21:45.2070571+04:00" endTime="2012-09-06T03:21:46.1251096+04:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="cfc325a7-647f-4ef3-bb08-777f7bb3ca37" resultType="DataDrivenTest">
<Output>
<TextMessages>
<Message>valueA: 1, valueB: 4, AssertResult: Passed</Message>
<Message>valueA: 2, valueB: 6, AssertResult: Passed</Message>
<Message>valueA: 3, valueB: 8, AssertResult: Passed</Message>
<Message>valueA: 4, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<10>. Actual:<0>. </Message>
<Message>valueA: 5, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<12>. Actual:<0>. </Message>
<Message>valueA: 6, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<14>. Actual:<0>. </Message>
<Message>valueA: 7, valueB: 16, AssertResult: Passed</Message>
<Message>valueA: 8, valueB: 18, AssertResult: Passed</Message>
<Message>valueA: 9, valueB: 20, AssertResult: Passed</Message>
<Message>valueA: 10, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<22>. Actual:<0>. </Message>
<Message>valueA: 11, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<24>. Actual:<0>. </Message>
<Message>valueA: 12, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<26>. Actual:<0>. </Message>
<Message>valueA: 13, valueB: 28, AssertResult: Passed</Message>
<Message>valueA: 14, valueB: 30, AssertResult: Passed</Message>
<Message>valueA: 15, valueB: 32, AssertResult: Passed</Message>
<Message>valueA: 16, valueB: 34, AssertResult: Passed</Message>
<Message>valueA: 17, valueB: 36, AssertResult: Passed</Message>
<Message>valueA: 18, valueB: 38, AssertResult: Passed</Message>
<Message>valueA: 19, valueB: 40, AssertResult: Passed</Message>
<Message>valueA: 20, valueB: 42, AssertResult: Passed</Message>
这些TextMessage可以被解析以生成测试报告。
P. S.对不起,我不能添加截图,因为我没有10个或更多的信誉=\
问题内容: 我正在尝试通过MSTest / Selenium在C#中进行数据驱动的测试。这是我尝试设置的一些代码示例: 这是我的错误:错误3非静态字段,方法或属性’Microsoft.VisualStudio.TestTools.UnitTesting.TestContext.DataRow.get’需要对象引用E:\ Projects \ SeleniumProject \ SeleniumPr
在范围报告中,我想显示测试的名称而不是方法名称。所以我找到了一个解决方案,为@Test注释添加了一个test name属性 问题1:在报告中,我看到getTestName方法返回null。 问题2:我无法在报告的“测试”列下创建测试名称为的测试。这是一条可以做到这一点的线: 测试=范围。createTest(Thread.currentThread())。getStackTrace()1。getM
编写测试代码时,一个较好的办法是把测试的输入数据和期望的结果写在一起组成一个数据表:表中的每条记录都是一个含有输入和期望值的完整测试用例,有时还可以结合像测试名字这样的额外信息来让测试输出更多的信息。 实际测试时简单迭代表中的每条记录,并执行必要的测试。这在练习 13.4 中有具体的应用。 可以抽象为下面的代码段: var tests = []struct{ // Test table
在我的公司,我使用SeleniumWebDriver进行自动化测试来自动化Web应用程序,但我直接使用id、xpath和所有工具,而不遵循任何框架,因此现在我遇到了一些问题,必须设计数据驱动的框架。 请建议我如何在eclipse下设置DatadrivenFramwework。要遵循哪些步骤和所有步骤。 谢谢
当将DataProvider与多个TestNG方法一起使用时,每个方法都按顺序与所有数据集一起运行。相反,我希望迭代数据集,并在每次迭代中执行所有方法。我不关心结果是否显示了每个测试方法的结果或每个方法运行的总结。 我已经试过了 所需的结果:
问题内容: 我是量角器的新手。谁能指导我使用量角器进行数据驱动的测试。下面是代码,配置文件和testdata.json文件。 配置文件: Json文件: 问题是它不是在获取数据,而是在所有输入框中写入未定义的内容。请帮忙 问题答案: 我假设它是一个 对象数组 ,您可以迭代每个数组元素并直接访问其内容,而您不需要的话,可以尝试如下操作: 我尚未测试以上代码,因此您应该使用 Page Objects,