接口测试

Posted 北漂的雷子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试相关的知识,希望对你有一定的参考价值。

  本来的打算是更新完8之后呢,后期就不在更新了,最近学习flask后,手又想开发个平台吧,吧我之前写的框架给运用上,形成一个简单的接口测试化平台吧,--IAPTest 

我给他起名,有没有感觉很霸气啊,其实撤这么多不如来点使用的,其实做这个平台呢,更多的是对flask学习的一个利用吧。当时自己构思了一下午,其实也不知道大家想要的都是什么样子的,所以呢,就开始做了下面的设计。

大题上,第一版的demo版本的需求就是这样的,因为这里没有考虑其他太多, 那么接下来就是来开始选择了,我选择的是flask 框架,前端呢 ,我用的是bootstarp框架,

那么接下来,我是要对我的数据库进行设计。这里要提的是我对权限的设计呢,我更多的是选择了一个较为简单的方式,我去用一个字段去进行权限控制,我使用level字段, 0就表示我这个用户是普通用户,1就是管理员用户,这里很多地方的删除都做了管理员和非管理员的区别,管理员可以对所有的进行删除,但是普通管理是不能的, 用户管理界面只能管理员去运作这个。

下面给下我数据库上面的代码片段。

class User(db.Model):
    __tablename__=\'users\'
    id=db.Column(db.Integer(),primary_key=True,autoincrement=True)
    username=db.Column(db.String(63),unique=True)
    password=db.Column(db.String(252))
    user_email=db.Column(db.String(64),unique=True)
    status=db.Column(db.Integer(),default=0)
    level=db.Column(db.Integer(),default=0)
    phone = db.relationship(\'TestResult\', backref=\'users\', lazy=\'dynamic\')
    def __repr__(self):
        return  self.username
    def set_password(self,password):
        self.password=generate_password_hash(password)
    def check_password(self,password):
        return  check_password_hash(self.password,password)
class Interface(db.Model):
    __tablename__=\'interfaces\'
    id=db.Column(db.Integer(),primary_key=True,autoincrement=True)
    project_name=db.Column(db.String(252))
    models_name=db.Column(db.String(252))
    Interface_name=db.Column(db.String(252))
    Interface_url=db.Column(db.String(252))
    Interface_meth= db.Column(db.String(252),default=\'GET\')
    Interface_par=db.Column(db.String(252))
    Interface_back=db.Column(db.String(252))
    Interface_user_id=db.Column(db.Integer(),db.ForeignKey(\'users.id\'))
    def __repr__(self):
        return  self.Interface_name
class InterfaceTest(db.Model):
    __tablename__=\'interfacetests\'
    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
    project=db.Column(db.String(252))
    model=db.Column(db.String(252))
    Interface_name= db.Column(db.String(252))
    Interface_url = db.Column(db.String(252))
    Interface_meth = db.Column(db.String(252))
    Interface_pase = db.Column(db.String(252))
    Interface_assert=db.Column(db.String(252))
    Interface_user_id = db.Column(db.Integer(), db.ForeignKey(\'users.id\'))
    def __repr__(self):
        return  self.yongli_name
class TestResult(db.Model):
    __tablename__=\'tstresults\'
    id=db.Column(db.Integer(),primary_key=True,autoincrement=True)
    Test_user_id=db.Column(db.Integer(),db.ForeignKey(\'users.id\'))
    test_num=db.Column(db.Integer())
    pass_num=db.Column(db.Integer())
    fail_num = db.Column(db.Integer())
    skip_num=db.Column(db.Integer())
    test_time=db.Column(db.DateTime(),default=datetime.datetime.now())
    hour_time=db.Column(db.Integer())
    test_rep=db.Column(db.String(252))
    test_log=db.Column(db.String(252))
    def __repr__(self):
        return  self.id

  这里的代码呢,我就不一一赘述, 接口,接口测试用例,接口执行结果,都是和用户表一对多的关系,有了数据表,我们就可以去创建我们的数据库了,在创建的时候,我们还需要加一个配置文件,这里存放着一些数据库的基本配置相关的。

SECRET_KEY = \'BaSeQuie\'
	basedir=os.path.abspath(os.path.dirname(__file__))
	SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(basedir, "data.sqlite")
	SQLALCHEMY_COMMIT_ON_TEARDOWN = True
	SQLALCHEMY_TRACK_MODIFICATIONS=False
	CSRF_ENABLED = True

  这样我们就可以去生成我们的数据库, 

界面来呢就是前段界面的编写,和后端处理函数的编写,这里呢,我就不一样叙述了,这里呢 给大家下面的几个地方的代码片段,展示下,主要是上传和下载这一块。

主要是测试日志的下载。

@app.route(\'/load/<string:filename>\',methods=[\'GET\'])
def load(filename):
    basedir = os.path.abspath(os.path.dirname(__file__))
    file_dir=os.path.join(basedir,\'upload\')
    response=make_response(send_from_directory(file_dir,filename,as_attachment=True))
    return response

 

单个用例的执行呢,我这里没有生成测试报告,我吧这个主要用到一个用例的检验上去,

多个用来呢,我这里用的是之前我在8上面提到的测试框架,在这里我做了一些修改,大的没有怎么改动,只是对部分代码进行优化。

接下来就是给大家展示下效果图

1.这是项目的目录

 

 

到这里呢,我的基本的测试框架就已经搞定了。前前后后一共大概花费了我三个周的时间吧,第一个demo版本就这么横空出世了。

 

这个周末北京的天气还算晴朗,天也不热,写起来代码也是六六的。

 

有疑问可以加我qq:952943386或者我的qq群194704520

希望大家一起冲菜鸟飞到更高

有钱的也可以给我捧下。

 

 

 

 

 

我是一个大专生,也是一个人奋斗到今天。

 

以上是关于接口测试的主要内容,如果未能解决你的问题,请参考以下文章

JMeter接口测试-Include控制器

接口测试 - 用Postman进行Apitest

从父片段到选项卡片段的接口侦听器不起作用

安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

一致性哈希算法PHP测试片段