智能体测开Day56

Demo01Test

java 复制代码
package Day06;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.testng.annotations.*;

import java.time.Duration;
import java.util.List;

public class Demo01Test {
    WebDriver driver;

    @BeforeMethod
    public void prepare(){
        driver = new EdgeDriver();
        driver.get("http://www.baidu.com");// 打开百度首页
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); // 设置隐式等待
    }
    @Test(groups = "smoke")
    public void test001() throws InterruptedException {
        System.out.println("输入搜索的内容,点击搜索,搜索结果正确");
        driver.findElement(By.id("chat-textarea")).sendKeys("java");

        WebElement e = driver.findElement(By.id("chat-textarea"));
        System.out.println(e.getAttribute("class"));
        System.out.println(e.getAttribute("placeholder"));
        Thread.sleep(3000);
    }
    @Test
    public void test002() throws InterruptedException {
        driver.get("http://www.baidu.com");
        WebElement e = driver.findElement(By.id("s-top-left")); // 左上角的工具栏
        List<WebElement> es = e.findElements(By.tagName("a"));
        int i = 0;
        for (WebElement a : es){
            System.out.println(a.getText());
            System.out.println(a.getAttribute("href"));
            if (i<3){
                a.click();
            }
            i++;
        }
        Thread.sleep(3000);
    }
    @AfterMethod
    public void clear(){
        driver.quit();
//        driver.close(); // 整个浏览器关闭
    }
}

Demo02Test

java 复制代码
package Day06;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.List;

/*
* json
*       jackson
*       fastjson    阿里开源的json解析库
*
*       json格式的字符串----解析成java中的对象。方便在代码中处理。反序列化
*       java中的对象----解析成json格式的字符串,方便传输。序列化
* */
public class Demo02Test {
    @Test
    public void test001(){
        User user1 = new User("Tony",21,"17734694395");
        System.out.println(user1); //User{name='Tony', age=21, phone='17734694395'}
        // {"age":21,"name":"Tony","phone":"17734694395"}
        String a = JSON.toJSONString(user1);
        System.out.println(a);

        User user2 = new User("Tony");
        System.out.println(user2);
        String b = JSON.toJSONString(user2); // {"age":0,"name":"Tony"}
        System.out.println(b);

        User user3 = new User("jack",10,"13919232051");
        List<User> users = new ArrayList<>();
        users.add(user1);
        users.add(user2);
        users.add(user3);

        JSONArray jsonArray = new JSONArray(users);
        String c = JSON.toJSONString(jsonArray);
        // [{"age":21,"name":"Tony","phone":"17734694395"},{"age":0,"name":"Tony"},{"age":10,"name":"jack","phone":"13919232051"}]
        System.out.println(c); // [{},{},{}]
    }
    @Test
    public void test002(){
        String a = "{\"age\":21,\"name\":\"Tony\",\"phone\":\"17734694395\"}";
        User u = JSON.parseObject(a,User.class);
        System.out.println(u.getPhone());
        System.out.println(u.getAge());
        System.out.println(u.getName());

        String b = "[{\"age\":21,\"name\":\"Tony\",\"phone\":\"17734694395\"},{\"age\":0,\"name\":\"Tony\"},{\"age\":10,\"name\":\"jack\",\"phone\":\"13919232051\"}]";
        List<User> users = JSON.parseArray(b,User.class);
        for (User uu : users){
            System.out.println(uu.getName());
        }
    }
}

class  User{
    String name;
    int age;
    String phone;

    //构造方法。tostring、get、set方法

    public User(String name){
        this.name = name;
    }

    public User(String name, int age, String phone) {
        this.name = name;
        this.age = age;
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", phone='" + phone + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

Demo03Test

java 复制代码
package Day06;

import com.alibaba.fastjson2.JSON;
import okhttp3.*;
import org.testng.Assert;
import org.testng.annotations.Test;

import java.io.IOException;

public class Demo03Test {
    // 金融项目,注册-get、登录-post 表单
    // 线性代码

    public static final String ENV = "http://127.0.0.1:8088/"; // 测试环境 常量 全大写字母 下划线
    public static final String REGISTER = ENV + "futureloan/mvc/api/member/register";
    public static final String LOGIN = ENV + "futureloan/mvc/api/member/login";
    @Test
    public void test001() throws IOException {
        System.out.println("注册接口,正确的手机号,错误密码(5位),注册失败");
        HttpUrl url = HttpUrl.parse(REGISTER).newBuilder().
                addQueryParameter("mobilephone","18294752353")
                .addQueryParameter("pwd","12345")
                .addQueryParameter("regname","hello world").build(); // 创建url
        Request request = new Request.Builder().url(url).get().build(); // 创建请求

        OkHttpClient client = new OkHttpClient();

        Response r = client.newCall(request).execute(); //发送请求
        String body = r.body().string();
        // {"status":0,"code":"20108","data":null,"msg":"密码长度必须为6~18"}
        System.out.println(body);
        Assert.assertTrue(body.contains("密码长度必须为6~18"));

        JinRongResponse expect = new JinRongResponse(0,"20108",null,"密码长度必须为6~18");
        JinRongResponse real = JSON.parseObject(body,JinRongResponse.class); // 实际结果
        Assert.assertEquals(real.getCode(),expect.getCode());
        Assert.assertEquals(real.getMsg(),expect.getMsg());
        Assert.assertEquals(real.getStatus(),expect.getStatus());
    }

    @Test(groups = "smoke")
    public void test002() throws IOException {
        System.out.println("登录接口(post),输入正确的手机号,正确的密码,登录成功");
        RequestBody form = new FormBody.Builder()
                .add("mobilephone","17734694395")
                .add("pwd","123456").build(); // 创建一个body

        Request request = new Request.Builder().url(LOGIN).post(form).build(); // 创建请求

        OkHttpClient client = new OkHttpClient();
        Response r = client.newCall(request).execute(); //发送请求
        String body = r.body().string();
        System.out.println(body);
        Assert.assertTrue(body.contains("登录成功"));

        JinRongResponse expect = new JinRongResponse(1,"10001",null,"登录成功");
        JinRongResponse real = JSON.parseObject(body,JinRongResponse.class); // 实际结果
        Assert.assertEquals(real.getCode(),expect.getCode());
        Assert.assertEquals(real.getMsg(),expect.getMsg());
        Assert.assertEquals(real.getStatus(),expect.getStatus());
    }

}

class  JinRongResponse{
    int status;
    String code;
    String data;
    String msg;

    // 构造方法、toString、get、set方法


    public JinRongResponse(int status, String code, String data, String msg) {
        this.status = status;
        this.code = code;
        this.data = data;
        this.msg = msg;
    }

    @Override
    public String toString() {
        return "JinRongResponse{" +
                "status=" + status +
                ", code='" + code + '\'' +
                ", data='" + data + '\'' +
                ", msg='" + msg + '\'' +
                '}';
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

全量测试.xml

XML 复制代码
<suite name="金融项目全量自动化" parallel="method" thread-count="5">
    <test name="界面自动化">
        <classes>
            <class name = "Day06.Demo01Test"/>
            <class name = "Day06.Demo02Test"/>
        </classes>
    </test>
    <test name="接口自动化">
        <classes>
            <class name = "Day06.Demo03Test"/>
        </classes>
    </test>
    <test name="其他测试">
        <classes>
            <class name = "Day05.Demo03Test"/>
            <class name = "Day05.Demo04Test"/>
        </classes>
    </test>
</suite>

冒烟测试.xml

XML 复制代码
<suite name="冒烟测试" parallel="method" thread-count="5">
    <test name="冒烟">
        <classes>
            <class name = "Day06.Demo01Test"/>
            <class name = "Day06.Demo02Test"/>
            <class name = "Day06.Demo02Test"/>
            <class name = "Day05.Demo03Test"/>
            <class name = "Day05.Demo04Test"/>
        </classes>
        <groups>
            <run>
                <include name="smoke"/>
            </run>
        </groups>
    </test>
</suite>
相关推荐
杨丰玮4181 小时前
从零手写Java飞机躲障碍游戏|Swing绘图、鼠标跟随、计时器碰撞检测实战(五)
java·python·游戏·游戏引擎·图形渲染·动画·贴图
莫得感情 o2 小时前
踩坑 - 压测三轮后 502:一个默认 10 的连接池如何拖垮整个服务
java
Escalating_xu2 小时前
【Linux线程】线程控制全解析:终止、join/detach、cancel、线程栈与 NPTL(下篇)
java·linux·运维
2602_959960922 小时前
电商大厂Java面试实录:Spring Boot/JVM/Redis/Kafka/微服务/安全/测试全解析
java·jvm·spring boot·redis·面试题
吃饱了得干活2 小时前
限界上下文之后:微服务怎么拆、上下文怎么聊?
java·后端·架构
yngsqq2 小时前
窗体快速取消
java·开发语言
岁月如歌77863 小时前
一次讲透 Redis 缓存击穿、穿透、雪崩,从原理到实战解决方案
java·后端·架构
weixin_BYSJ19873 小时前
springboot智慧公共交通系统---附源码51123
java·javascript·spring boot·python·django·flask·php
AI多Agent协作实战派3 小时前
AI多Agent协作系统实战(四十六):改了十次规则,AI员工还是老样子——会话缓存的坑
java·spring·缓存