gpt4 book ai didi

c# - 从控制台应用程序调用生成的 Web 测试代码

转载 作者:行者123 更新时间:2023-11-30 13:05:53 24 4
gpt4 key购买 nike

我有一个关于从 Visual Studio Web 测试中提取代码的一般性问题。我使用了网络测试的“生成代码”选项并得到了以下信息:

using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.WebTesting;
using Microsoft.VisualStudio.TestTools.WebTesting.Rules;

namespace SignsOfLife
{
public class SignsOfLifeCoded : WebTest {

public SignsOfLifeCoded() {
this.PreAuthenticate = true;
}

public override IEnumerator<WebTestRequest> GetRequestEnumerator() {
// Initialize validation rules that apply to all requests in the WebTest
if ((this.Context.ValidationLevel >= Microsoft.VisualStudio.TestTools.WebTesting.ValidationLevel.Low)) {
ValidateResponseUrl validationRule1 = new ValidateResponseUrl();
this.ValidateResponse += new EventHandler<ValidationEventArgs>(validationRule1.Validate);
}

WebTestRequest request1 = new WebTestRequest("http://localhost/site/client/default.aspx");
yield return request1;
request1 = null;

WebTestRequest request2 = new WebTestRequest("http://localhost/site/login.aspx");
request2.ThinkTime = 5;
request2.QueryStringParameters.Add("c", "clientcode", false, false);
ExtractHiddenFields extractionRule1 = new ExtractHiddenFields();
extractionRule1.Required = true;
extractionRule1.HtmlDecode = true;
extractionRule1.ContextParameterName = "1";
request2.ExtractValues += new EventHandler<ExtractionEventArgs>(extractionRule1.Extract);
yield return request2;
request2 = null;

WebTestRequest request3 = new WebTestRequest("http://localhost/site/login.aspx");
request3.Method = "POST";
request3.ExpectedResponseUrl = "http://localhost/site/user/home.aspx";
request3.QueryStringParameters.Add("c", "clientcode", false, false);
FormPostHttpBody request3Body = new FormPostHttpBody();
request3Body.FormPostParameters.Add("__LASTFOCUS", this.Context["$HIDDEN1.__LASTFOCUS"].ToString());
request3Body.FormPostParameters.Add("__EVENTTARGET", this.Context["$HIDDEN1.__EVENTTARGET"].ToString());
request3Body.FormPostParameters.Add("__EVENTARGUMENT", this.Context["$HIDDEN1.__EVENTARGUMENT"].ToString());
request3Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
request3Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());
request3Body.FormPostParameters.Add("Login1$UserName", "username");
request3Body.FormPostParameters.Add("Login1$Password", "password");
request3Body.FormPostParameters.Add("Login1$LoginButton", "Log In");
request3.Body = request3Body;
yield return request3;
request3 = null;
}
}
}

我想做的基本上是将此测试放入一个单独的服务中,全天运行以进行健康检查。我基本上想确保用户能够全天登录。我应该使用什么过程来将测试变成控制台应用程序之类的东西?我在调试 webtest 代码时遇到了问题。比如我如何正确调用 GetRequestEnumerator 方法并从代码中响应它?

最佳答案

第一个建议:
假设:您想每天运行它并使其可重用/可扩展以用于新测试

将您的测试代码放入网络服务中并适本地链接它。然后创建一个基于任何时间间隔每天使用该服务的 Windows 服务,并以某种方式存储结果。

如果我的假设不正确,那么对于以后不会重用的东西来说,这是不必要的工作量。

第二个建议:
假设:您的测试只会执行一天

只需编写一个控制台应用程序以给定的时间间隔执行测试编写控制台应用程序以运行计时器类并在时间间隔结束时注册回调事件。在您定义的回调方法中,执行所需的测试并记录结果。

有一个线程问题可以通过多种方式处理......您希望您的应用程序继续运行一整天,所以您可以使用类似这样的方法

public class tester
{
public tester()
{
//setup timer logic here
//..
//..

var ts = new ThreadStart(run);
var thread = new Thread(ts);
thread.start();
}

public void run()
{
while (ShouldContinue);
{
//do nothing execute keep app going
}
}
}

然后在满足退出条件时切换 ShouldContinue ...我假设条件是应用程序运行 24 小时 + 在这种情况下

第二种解决方案确实不会花很长时间来设计和制造。但第一个会更耗时。

希望这能回答您的问题或激发另一个想法 =D

关于c# - 从控制台应用程序调用生成的 Web 测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2276613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com