【发布时间】:2021-04-13 06:01:29
【问题描述】:
我必须利用在一个测试方法中初始化的字符串变量的值,并且我希望在下一个测试方法中使用相同的值
例如:TestMethod1 如下: 我有一个注册表单,其中我有一个用户名字段。
我正在使用 sendkeys() 传递用户名:“Test123” ----->(来自 excel) 现在,如果我重新运行脚本,我会收到错误消息“用户名已存在,请输入唯一的用户名”
针对这个问题,我创建了一个函数,用于将随机字符串附加到用户名。所以新的用户名将是“Test123SomeRandomstring”----> 这存储在TestMethod1的字符串变量中
现在我的下一个测试方法有问题,如下所示 (TestMethod2),即登录 TestMethod:
现在,当我尝试使用用户名登录时,我需要 TestMethod1 中的字符串变量用于在 TestMethod2 中登录。
有人可以帮忙吗?
提前致谢。
注意:我必须只在 C# 中创建上述代码
[TestMethod]
public virtual void TestRegristration()
{
try
{
LoginPage ObjLoginPage = LoginPage.GetInstance(this);
var generator = new GenerateRandomString();
var randomString = generator.RandomString();
ObjLoginPage.enterUserName(1, ObjExcelHelper, Driver, "UserName",randomString);//Enter Usernamewith some random string
ObjLoginPage.enterPassword(1, ObjExcelHelper, Driver, "Password");//Enter Password, Confirm Password and Click Register Button
}
catch (Exception ex)
{
ex.ToString();
}
}
[TestMethod]
public virtual void TestLoginWithValidCredential()
{
try
{
LoginPage ObjLoginPage = LoginPage.GetInstance(this);
ObjLoginPage.enterUserName(1, ObjExcelHelper, Driver, "UserName");//need to pass randomString here with username from TestMethod1
//ObjLoginPage.enterPassword(1, ObjExcelHelper, Driver, "Password");
}
catch (Exception ex)
{
ex.ToString();
}
}
public class GenerateRandomString
{
public string RandomString()
{
int length = 5;
// creating a StringBuilder object()
StringBuilder str_build = new StringBuilder();
Random random = new Random();
char letter;
for (int i = 0; i < length; i++)
{
double flt = random.NextDouble();
int shift = Convert.ToInt32(Math.Floor(25 * flt));
letter = Convert.ToChar(shift + 65);
str_build.Append(letter);
}
//System.Console.WriteLine(str_build.ToString());
return str_build.ToString();
}
}
【问题讨论】:
-
在测试方法之间存在这种依赖关系是不好的做法。测试用例应该可以以任何顺序独立运行。一种方法是在类中的所有测试之前在
[ClassInitialize]方法中创建随机用户名一次。 -
顺便说一句。为什么你的测试方法是虚拟的?
标签: c#