如何在C#中将一种测试方法的变量传递给另一种测试方法?

如何在C#中将一种测试方法的变量传递给另一种测试方法?,c#,C#,我必须利用在一个测试方法中初始化的字符串变量的值,我希望在下一个测试方法中使用相同的值 例如:测试方法1如下: 我有一个注册表,因为我有一个用户名字段 我正在通过sendkeys()传递用户名:“Test123”(这是来自excel) 现在,如果我重新运行脚本,我会得到一个错误:“用户名已经存在,请输入唯一用户名” 对于这个问题,我创建了一个函数,用于将随机字符串附加到用户名。因此,新用户名将是“Test123SomeRandomstring”-->这存储在TestMethod1的字符串变量中

我必须利用在一个测试方法中初始化的字符串变量的值,我希望在下一个测试方法中使用相同的值

例如:测试方法1如下: 我有一个注册表,因为我有一个用户名字段

我正在通过sendkeys()传递用户名:“Test123”(这是来自excel) 现在,如果我重新运行脚本,我会得到一个错误:“用户名已经存在,请输入唯一用户名”

对于这个问题,我创建了一个函数,用于将随机字符串附加到用户名。因此,新用户名将是“Test123SomeRandomstring”-->这存储在TestMethod1的字符串变量中

现在,我的下一个测试方法有一个问题,如下所示(TestMethod2),即登录TestMethod:

现在,当我尝试使用用户名登录时,我需要TestMethod1中的字符串变量用于登录TestMethod2。

有人能帮忙吗

提前谢谢

注意:我只能用C#创建上述代码

[TestMethod]
公共虚拟void testregistration()
{
尝试
{
LoginPage ObjLoginPage=LoginPage.GetInstance(此);
var generator=新的GeneratorDomainString();
var randomString=generator.randomString();
输入用户名(1,ObjExcelHelper,驱动程序,“用户名”,随机字符串);//输入带有随机字符串的用户名
ObjLoginPage.enterPassword(1,ObjExcelHelper,驱动程序,“密码”);//输入密码,确认密码,然后单击“注册”按钮
}
捕获(例外情况除外)
{
例如ToString();
}
}
[测试方法]
公共虚拟void TestLoginWithValidCredential()
{
尝试
{
LoginPage ObjLoginPage=LoginPage.GetInstance(此);
enterUserName(1,ObjExcelHelper,驱动程序,“UserName”);//需要在此处传递带有TestMethod1用户名的随机字符串
//输入密码(1,ObjExcelHelper,驱动程序,“密码”);
}
捕获(例外情况除外)
{
例如ToString();
}
}
公共类生成器域字符串
{
公共字符串RandomString()
{
整数长度=5;
//创建StringBuilder对象()
StringBuilder str_build=新建StringBuilder();
随机=新随机();
字符字母;
for(int i=0;i
理想情况下,单个测试应该是自包含的,您不应该依赖于测试顺序

其次是构造函数。在MS测试中,构造函数被调用一次

还有is或event AssemblyInitialize属性(但它们是
静态的
,我认为这是有限的)。以下是官方消息:

然而,对于您的场景,一个字符串,可能
静态只读
就足够了

private static readonly Test UserId = ...
如果用户不存在,helper方法可以创建该用户;如果用户已经存在,helper方法可以获取id


更新

[TestClass()]
public class MyTestClass
{
  private string TestId {get; set;}

  public MyTestClass() 
  {
      var generator = new GenerateRandomString();
      TestId = generator.RandomString();

  [TestMethod]
  public void TestRegristration()
        {
           ...
           ObjLoginPage.enterUserName(1, ObjExcelHelper, Driver, "UserName",TestId );


在测试方法之间存在这种依赖性是不好的做法。测试用例应该可以独立地以任何顺序运行。一种方法是在class.BTW中的所有测试之前,在
[ClassInitialize]
方法中创建一次随机用户名。为什么你的测试方法是虚拟的?你能更详细地解释一下我如何在我的方法中使用[ClassInitialize]吗?
[TestClass()]
public class MyTestClass
{
  private string TestId {get; set;}

  public MyTestClass() 
  {
      var generator = new GenerateRandomString();
      TestId = generator.RandomString();

  [TestMethod]
  public void TestRegristration()
        {
           ...
           ObjLoginPage.enterUserName(1, ObjExcelHelper, Driver, "UserName",TestId );


[TestClass()]
public class MyTestClass
{
  private static string TestId {get; set;}

  [ClassInitialize()]
  public static void ClassInit(TestContext context)
  {
      var generator = new GenerateRandomString();
      TestId = generator.RandomString();
  }

  [TestMethod]
  public void TestRegristration()
  {
      ...
      ObjLoginPage.enterUserName(1, ObjExcelHelper, Driver, "UserName",TestId );