项目结合数据库校验

1.测试充值接口想要测试充值接口,那肯定是要先登录账号后,才可以进行充值。查看接口文档,可以看到我们需要得到token和member_id字段值测试步骤:访问登录接口,得到token,member_id 把token添加到headers中 把member_id添加到请求数据当中 访问充值接口 进行余额校验编写代码之前,需要先把测试用例编写好,编写用例时需要参考接口文档来确定请求头和参数需要的字段内容,然后借用postman来编写预期结果自动化测试用例代码如下:..
摘要由CSDN通过智能技术生成

1.测试充值接口

想要测试充值接口,那肯定是要先登录账号后,才可以进行充值。查看接口文档,可以看到我们需要得到token和member_id字段值

测试步骤:

  1. 访问登录接口,得到token,member_id
  2. 把token添加到headers中
  3. 把member_id添加到请求数据当中
  4. 访问充值接口
  5. 进行余额校验  

编写代码之前,需要先把测试用例编写好,编写用例时需要参考接口文档来确定请求头和参数需要的字段内容,然后借用postman来编写预期结果

自动化测试用例代码如下:

import unittest
import requests
import json
from config import config
from ddt import ddt, data
from common.excel import read_excel

# 得到测试数据
excel_data = read_excel(file_name=config.cases_dir, sheet_name='recharge')


@ddt
class TestRecharge(unittest.TestCase):
    @data(*excel_data)
    def test_recharge(self, info):
        # 访问登录接口
        headers = {"X-Lemonban-Media-Type": "lemonban.v2"}
        json_data = {"mobile_phone": "15100002222", "pwd": "12345678"}
        login_resp = requests.request(url=config.host + 'member/login',
                                      method='post',
                                      headers=headers,
                                      json=json_data).json()  # 一定要注意加上.json,否则会报错
        # 获取member_id和token
        member_id = str(login_resp['data']['id'])  # id是个整数类型,所以要转换成str,才方便下边替换
        token = login_resp['data']['token_info']['token']
        # info替换标记的测试数据
        json_data = info['json']
        headers = info['headers']
        # 替换请求体
        if "#member_id#" in json_data:
            json_data = json_data.replace("#member_id#", member_id)
        # 替换请求头
        if "#token#" in headers:
            headers = headers.replace("#token#", token)
        # 转化成字典类型
        json_data = json.loads(json_data)
        headers = json.loads(headers)
        expected = json.loads(info['expected'])
        # 访问充值接口
        recharge_resp = requests.request(url=config.host + info['url'],
                                         method=info['method'],
                                         headers=headers,
                                         json=json_data).json()
        # 断言
        for key, value in expected.items():
            self.assertEqual(value, recharge_resp[key])

运行结果:

 编写代码中遇到的问题:

  1. excel_data = read_excel(file_name=config.cases_dir, sheet_name='recharge')读取的sheet表格名字一定记住更换
  2. @data(*excel_data)此行代码的*一定不要忘记,否则程序报错,找了半天问题
  3. 请求接口的代码一定要加上.json()                                                                                     
  4. member_id = str(login_resp['data']['id'])一定要把member_id转化成字符串,因为member_id是int
  5. for key, value in expected.items():
        self.assertEqual(value, recharge_resp[key])断言的代码容易出错,要么直接复制之前写的没问题,要么自己写的时候一定要注意,再不行就用V3版本的断言

虽然测试用例编写好了,但是可以看出代码太多,可重复利用的代码也不少,因此接下来我们需要进行以下几个方面的优化:

  • 一个用例的代码太多-->封装函数或者类解决
  • 响应数据的获取-->jsonpath
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我目前并不支持生成代码功能,但我可以为您提供相关的Java图书管理系统结合数据库的参考代码。 首先,在Java中使用MySQL数据库,需要下载并安装MySQL JDBC驱动程序。可以在以下链接中下载:https://dev.mysql.com/downloads/connector/j/ 接下来,我们来创建一个名为"BookManager"的Java项目。在该项目中,我们创建一个名为"Book"的Java类,来定义图书对象的属性和方法: ```java public class Book { private int id; private String title; private String author; private String publisher; private int year; private double price; public Book(int id, String title, String author, String publisher, int year, double price) { this.id = id; this.title = title; this.author = author; this.publisher = publisher; this.year = year; this.price = price; } public int getId() { return id; } public String getTitle() { return title; } public String getAuthor() { return author; } public String getPublisher() { return publisher; } public int getYear() { return year; } public double getPrice() { return price; } public String toString() { return "ID: " + id + " Title: " + title + " Author: " + author + " Publisher: " + publisher + " Year: " + year + " Price: " + price; } } ``` 接下来,我们创建一个名为"Database"的Java类,来实现与MySQL数据库的连接和操作: ```java import java.sql.*; public class Database { private Connection connection; private Statement statement; private ResultSet resultSet; public void connect() { try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookmanager", "root", "password"); statement = connection.createStatement(); } catch (Exception e) { e.printStackTrace(); } } public void disconnect() { try { if (resultSet != null) { resultSet.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (Exception e) { e.printStackTrace(); } } public void addBook(Book book) { try { String query = "INSERT INTO books (id, title, author, publisher, year, price) VALUES (?, ?, ?, ?, ?, ?)"; PreparedStatement preparedStatement = connection.prepareStatement(query); preparedStatement.setInt(1, book.getId()); preparedStatement.setString(2, book.getTitle()); preparedStatement.setString(3, book.getAuthor()); preparedStatement.setString(4, book.getPublisher()); preparedStatement.setInt(5, book.getYear()); preparedStatement.setDouble(6, book.getPrice()); preparedStatement.executeUpdate(); preparedStatement.close(); } catch (Exception e) { e.printStackTrace(); } } public void updateBook(Book book) { try { String query = "UPDATE books SET title=?, author=?, publisher=?, year=?, price=? WHERE id=?"; PreparedStatement preparedStatement = connection.prepareStatement(query); preparedStatement.setString(1, book.getTitle()); preparedStatement.setString(2, book.getAuthor()); preparedStatement.setString(3, book.getPublisher()); preparedStatement.setInt(4, book.getYear()); preparedStatement.setDouble(5, book.getPrice()); preparedStatement.setInt(6, book.getId()); preparedStatement.executeUpdate(); preparedStatement.close(); } catch (Exception e) { e.printStackTrace(); } } public void deleteBook(int id) { try { String query = "DELETE FROM books WHERE id=?"; PreparedStatement preparedStatement = connection.prepareStatement(query); preparedStatement.setInt(1, id); preparedStatement.executeUpdate(); preparedStatement.close(); } catch (Exception e) { e.printStackTrace(); } } public Book getBook(int id) { try { String query = "SELECT * FROM books WHERE id=?"; PreparedStatement preparedStatement = connection.prepareStatement(query); preparedStatement.setInt(1, id); resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { int bookId = resultSet.getInt("id"); String title = resultSet.getString("title"); String author = resultSet.getString("author"); String publisher = resultSet.getString("publisher"); int year = resultSet.getInt("year"); double price = resultSet.getDouble("price"); Book book = new Book(bookId, title, author, publisher, year, price); return book; } preparedStatement.close(); } catch (Exception e) { e.printStackTrace(); } return null; } public void displayBooks() { try { String query = "SELECT * FROM books"; resultSet = statement.executeQuery(query); while (resultSet.next()) { int id = resultSet.getInt("id"); String title = resultSet.getString("title"); String author = resultSet.getString("author"); String publisher = resultSet.getString("publisher"); int year = resultSet.getInt("year"); double price = resultSet.getDouble("price"); Book book = new Book(id, title, author, publisher, year, price); System.out.println(book.toString()); } } catch (Exception e) { e.printStackTrace(); } } } ``` 在该类中,我们定义了以下方法: - connect():连接到MySQL数据库。 - disconnect():断开与MySQL数据库的连接。 - addBook():向数据库中添加图书。 - updateBook():更新数据库中的图书信息。 - deleteBook():从数据库中删除图书。 - getBook():根据图书ID从数据库中获取图书信息。 - displayBooks():显示数据库中所有图书的信息。 最后,我们创建一个名为"Main"的Java类,来测试我们的Java图书管理系统: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Database database = new Database(); database.connect(); while (true) { System.out.println("1. Add book"); System.out.println("2. Update book"); System.out.println("3. Delete book"); System.out.println("4. Get book"); System.out.println("5. Display books"); System.out.println("6. Exit"); System.out.print("Enter your choice: "); int choice = scanner.nextInt(); switch (choice) { case 1: System.out.print("Enter book id: "); int id = scanner.nextInt(); scanner.nextLine(); System.out.print("Enter book title: "); String title = scanner.nextLine(); System.out.print("Enter book author: "); String author = scanner.nextLine(); System.out.print("Enter book publisher: "); String publisher = scanner.nextLine(); System.out.print("Enter book year: "); int year = scanner.nextInt(); System.out.print("Enter book price: "); double price = scanner.nextDouble(); Book book = new Book(id, title, author, publisher, year, price); database.addBook(book); break; case 2: System.out.print("Enter book id: "); int updateId = scanner.nextInt(); scanner.nextLine(); System.out.print("Enter book title: "); String updateTitle = scanner.nextLine(); System.out.print("Enter book author: "); String updateAuthor = scanner.nextLine(); System.out.print("Enter book publisher: "); String updatePublisher = scanner.nextLine(); System.out.print("Enter book year: "); int updateYear = scanner.nextInt(); System.out.print("Enter book price: "); double updatePrice = scanner.nextDouble(); Book updateBook = new Book(updateId, updateTitle, updateAuthor, updatePublisher, updateYear, updatePrice); database.updateBook(updateBook); break; case 3: System.out.print("Enter book id: "); int deleteId = scanner.nextInt(); database.deleteBook(deleteId); break; case 4: System.out.print("Enter book id: "); int getBookId = scanner.nextInt(); Book getBook = database.getBook(getBookId); if (getBook != null) { System.out.println(getBook.toString()); } else { System.out.println("Book not found"); } break; case 5: database.displayBooks(); break; case 6: database.disconnect(); System.exit(0); break; default: System.out.println("Invalid choice"); } } } } ``` 在该类中,我们使用Scanner类来获取用户输入,并根据用户选择调用数据库类中的相应方法。 这就是一个简单的Java图书管理系统结合MySQL数据库的实现。需要注意的是,这只是一个简单的示例代码,实际开发中可能需要更多的功能和更严格的数据校验

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值