我正在使用C#VS2008中的Xml数据源编写数据驱动的单元测试.
属性看起来像这样,一切都很棒.
[DeploymentItem("HtmlSchemaUrls.xml")]
[DataSource("DataSource", "Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\HtmlSchemaUrls.xml", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, "URL")]
[DataBinding("DataSource", "URL", "URL_Text", "DataSource.URL.URL_Text")]
[TestMethod]
Run Code Online (Sandbox Code Playgroud)
我想扩展Microsoft.VisualStudio.TestTools.DataSource.XML数据源的功能,最好通过App.config进行配置.例如,一个bool,当我运行Xml文件中的所有行时为true,而当为false时,我只运行一个.
我不想在测试用例本身中执行此检查 - 我有1000个具有此要求的测试用例.
任何有关如何实现这一目标的指导都将非常受欢迎.
我已从Visual Studio 2010升级到Visual Studio 2012.
在我的单元测试项目中,我有一个[ClassInitialize]方法生成一个CSV文件,然后使用连接到CSV的[DataSource]将其输入数据驱动的[TestMethod].
这在Visual Studio 2010中非常有用.
我无法在Visual Studio 2012中使用它.
似乎在VS2012中,MS测试运行器需要连接到[DataSource]的文件已经存在,否则将不会运行任何测试.如果我自己创建CSV,则会运行数据驱动的测试,但它们不会获取[ClassInitialize]中创建的数据:似乎在[ClassInitialize]运行之前评估来自[DataSource]的测试列表.
有解决方法吗?
这是一个可以重现问题的最小项目.对我来说,这在VS2010中取得了成功,但在VS2012中失败了.
TestProject.cs
using System.Diagnostics;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace TestProject
{
[TestClass]
public class DataDrivenUnitTest
{
private static bool _classInitializeCalled;
private static int _testCount;
public TestContext TestContext { get; set; }
[ClassInitialize]
public static void ClassInitialize(TestContext testContext)
{
// Generate the csv list of tests
//TestContext = testContext;
_classInitializeCalled = true;
string testDirectory;
testDirectory = testContext.DeploymentDirectory;
using (var f = new StreamWriter(testDirectory + @"\" + "TestList.csv")) …Run Code Online (Sandbox Code Playgroud) 我想为几个手工组合的输入数据和预期结果重用相同的测试用例代码,但不需要对每个集合的代码进行复制.其他语言的框架以不同的方式支持它,例如在Groovy/Spock中:
def "maximum of two numbers"(int a, int b, int c) {
expect:
Math.max(a, b) == c
where:
a | b | c
1 | 3 | 3
7 | 4 | 4
0 | 0 | 0
}
Run Code Online (Sandbox Code Playgroud)
在ExUnit中执行此操作的首选方法是什么?也许ExUnit不是最好的框架吗?
数据驱动测试是为任何工具编写自动化测试用例的重要方面。我最近一直在测试testcafe,但还没有找到令人信服的方式来进行数据驱动的测试,即对不同的输入执行测试。
我遇到了以下示例:https : //testcafe-discuss.devexpress.com/t/multiple-execution-of-one-test-with-different-data/219, 但在上面的示例中,我们处理的是不同的登录用户名作为输入。如果我设想必须检查页面上是否显示元素列表的情况,那么我肯定会采取一些步骤进行验证。在这种情况下,我可能不想在每次传递新输入时都执行引导步骤。在上面的示例中,输入看起来像是在测试用例级别上,而不是在测试步骤级别上,因为我们将测试用例放在for循环中,因此无论我是否要重复它们,所有验证/导航点都将执行
由于我是testcafe的新手,并且遍历分散的文档,所以我的问题是-对于数据驱动的测试,这是我们在测试咖啡馆中唯一的方法吗?还是在testcafe中有更令人信服的,非冗长的方法-如果是的话,有人可以向我指出该文档吗?
我必须测试一个消息路由应用程序,其功能大致如下: - 消息被发送到app - app检查消息 - 消息根据消息内容转发到某处
绝大多数测试用例几乎相同; 生成特定类型的消息,将其加载到系统中,等待几秒钟,然后检查所需的目标以确保消息正确转发.
而不是在Cucumber中生成100个几乎相同的测试用例,是否有建议的方法来生成一个测试用例,并让它重复循环遍历所有(message,required_destination)元组?我更喜欢将这些元组保存到YAML文件而不是数据库中,以便于维护,但任何一种解决方案都可以.
我试过谷歌搜索但没有找到任何东西.基本上,我想按照我定义的顺序运行每一行.例如,如果我有这个:
[Row("a")]
[Row("b")]
[Row("c")]
[Test]
public void Test(string s)...
Run Code Online (Sandbox Code Playgroud)
我想确保在测试B之前执行测试A,并且在测试C之前执行测试B.
我正在尝试为我们的一个Web应用程序自动化一些测试,我需要知道如何使我的Coded UI项目从CSV文件中读取数据.让我们说我想测试登录屏幕.我的CSV文件将包含一些用户名和密码.我希望我的Coded UI测试能够读取这些登录详细信息并循环遍历它们以对每组数据运行测试.
c# automated-tests data-driven-tests coded-ui-tests visual-studio-2012
我很难使用Coded UI测试方法映射CSV文件.这很可能是一个愚蠢的问题,但我似乎找不到解决我的问题的办法,至少没有一个有效.我确保将CSV文件的属性设置为始终复制.我还通过在测试方法上面写了以下行来导入CSV文件.
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\Data\\login.csv", "login#csv", DataAccessMethod.Sequential), DeploymentItem("login.csv"), TestMethod]
Run Code Online (Sandbox Code Playgroud)
文件名是login.csv,它位于Data文件夹中.
测试将编译没有任何问题但是一旦测试执行,应该从CSV文件接收输入的字段保持为空并且执行被中断.我尝试使用字符串替换CSV文件中的数据,它完全正常.我用来导入每个参数的代码是:
TestContext.DataRow["Username"].ToString()
Run Code Online (Sandbox Code Playgroud)
此外,CSV文件包含以下内容:
Username,Password,Fullname
admin@mail.com,password,Admin
Run Code Online (Sandbox Code Playgroud)
是否有人可以指出我忘记了什么.
更新:我确定了问题,似乎问题只围绕csv文件的第一列.当我尝试导入任何其他值时,它完全正常.
csv import data-driven-tests coded-ui-tests visual-studio-2013
我是量角器的新手.任何人都可以指导我使用量角器进行数据驱动测试.下面是代码,配置文件和testdata.json文件.
'use strict';
var testData = require('../example/Test Data/Test.json');
describe('LoginPage', function() {
var loginData = require('../example/Test Data/Test.json');
testData.forEach(function (data) {
it("data.description", function (data) {
browser.get("http://127.0.0.1:8080/#/login");
element(by.model("username")).sendKeys(data.username);
element(by.model("password")).sendKeys(data.passwordField);
element(by.buttonText("Authenticate")).click();
});
});
});
Run Code Online (Sandbox Code Playgroud)
配置文件:
// An example configuration file.
exports.config = {
directConnect: true,
//seleniumAddress: 'http://localhost:4444/wd/hub',
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
// Framework to use. Jasmine is recommended.
framework: 'jasmine',
// Spec patterns are relative to the current working directory when
// protractor is …Run Code Online (Sandbox Code Playgroud) 如果预期变量是整数,它就像这样
[DataRow(2)]
[TestMethod]
public void TestMethod(int expected)
{
// some code...
}
Run Code Online (Sandbox Code Playgroud)
但是当有二维数组 int[,] 而不是 int 参数时该怎么办呢?当我尝试这样做时
[DataRow(new int[,] { {0, 0}, {0, 0} })]
[TestMethod]
public void TestMethod(int[,] expected)
{
// some code...
}
Run Code Online (Sandbox Code Playgroud)
错误说
属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式
c# unit-testing mstest data-driven-tests parameterized-unit-test
c# ×5
unit-testing ×3
mstest ×2
testing ×2
automation ×1
csv ×1
cucumber ×1
datasource ×1
elixir ×1
gallio ×1
import ×1
json ×1
mbunit ×1
protractor ×1
testcafe ×1
xml ×1
yaml ×1