SpringBoot+TestNG+RESTAssured搭建测试框架(2)

如何通过RestAssured测试登陆页面(跳转sso登陆,sso url携带新生成的login_challenge)

引入RestAssured和TestNG的依赖包,可以在pom.xml文件中添加以下依赖

<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>4.3.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.4.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.1</version>
</dependency>

创建一个测试类,并在类上添加@Test注解

public class SSOLoginTest {

    @Test
    public void TestLogin{
    }
}

在测试方法中,使用RestAssured发送GET请求到登陆页面,并获取响应

Response response = RestAssured.given()
                .when()
                .get("http://localhost:8080/login");

解析响应中的HTML页面,获取登陆页面中的表单数据,包括表单的action地址、hidden字段等信息

	String html = response.getBody().asString();
	Document document = Jsoup.parse(html);
	Element form = document.select("form").first();
	String action = form.attr("action");
	Elements inputs = form.select("input");
	Map<String, String> formData = new HashMap<>();
	for (Element input : inputs) {
	    String name = input.attr("name");
	    String value = input.attr("value");
	    if (!name.isEmpty()) {
	        formData.put(name, value);
	    }
	}

根据获取到的表单数据,构造POST请求,将用户名和密码作为参数发送到登陆页面

String username = "testuser";
String password = "testpassword";
formData.put("username", username);
formData.put("password", password);
response = RestAssured.given()
            .contentType("application/x-www-form-urlencoded")
            .formParams(formData)
            .post(action);

解析响应中的HTML页面,获取跳转至SSO登陆页面的URL,该URL中包含了新生成的login_challenge参数

html = response.getBody().asString();
document = Jsoup.parse(html);
String ssoUrl = document.select("a").first().attr("href");

构造GET请求,将新生成的login_challenge参数作为参数发送到SSO登陆页面

response = RestAssured.given()
            .when()
            .get(ssoUrl);

根据响应中的状态码或者页面内容来判断登陆是否成功

Assert.assertEquals(response.getStatusCode(), 200);
Assert.assertTrue(response.getBody().asString().contains("Welcome"));

TODO(上述代码暂未PASS)

Spring BootTestNG是两个独立的技术,可以结合使用来实现自动化测试。下面是一个实现Spring BootTestNG自动化测试的步骤: 1. 首先,确保你已经安装了Java和Maven,并且已经创建了一个Spring Boot项目。 2. 在项目的pom.xml文件中添加TestNG依赖。你可以在Maven仓库中找到TestNG的依赖信息。 3. 创建一个测试类,并使用@Test注解标记测试方法。你可以在这些测试方法中编写你的测试代码。 4. 配置TestNG运行器。你可以在测试类上使用@Test注解的属性来配置TestNG的一些属性,比如并发模式、测试套件等。 5. 运行测试。你可以使用Maven命令或者集成开发环境中的TestNG插件来运行测试。 6. 查看测试报告。TestNG会生成详细的测试报告,包括测试结果、执行时间等信息。你可以在控制台输出查看,也可以保存为文件。 请注意,Spring BootTestNG的集成并没有一个固定的标准方法,具体的实现方式可能会因项目的不同而有所差异。你可以根据你的项目需求和喜好来选择适合的方法。 提到了导出报告的方法,你可以按照他的说明来导出测试报告。至于覆盖率报告,可以使用代码覆盖工具,比如JaCoCo来生成覆盖率报告。你可以配置JaCoCo插件来生成覆盖率报告,并将报告存放在项目的目录下。确保报告的存放路径与项目的层级结构一致,以便生成正确的覆盖率报告。 总结来说,你可以通过集成Spring BootTestNG来实现自动化测试。在项目中编写测试代码,并使用TestNG运行器来执行测试。使用TestNG生成详细的测试报告,并使用代码覆盖工具来生成覆盖率报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值