接口測試(9)

  原本的打算是更新完8以後呢,後期就不在更新了,最近學習flask後,手又想開發個平臺吧,吧我以前寫的框架給運用上,造成一個簡單的接口測試化平臺吧,--IAPTest 前端

我給他起名,有沒有感受很霸氣啊,其實撤這麼多不如來點使用的,其實作這個平臺呢,更多的是對flask學習的一個利用吧。當時本身構思了一下午,其實也不知道你們想要的都是什麼樣子的,因此呢,就開始作了下面的設計。python

大題上,初版的demo版本的需求就是這樣的,由於這裏沒有考慮其餘太多, 那麼接下來就是來開始選擇了,我選擇的是flask 框架,前端呢 ,我用的是bootstarp框架,sql

那麼接下來,我是要對個人數據庫進行設計。這裏要提的是我對權限的設計呢,我更多的是選擇了一個較爲簡單的方式,我去用一個字段去進行權限控制,我使用level字段, 0就表示我這個用戶是普通用戶,1就是管理員用戶,這裏不少地方的刪除都作了管理員和非管理員的區別,管理員能夠對全部的進行刪除,可是普通管理是不能的, 用戶管理界面只能管理員去運做這個。數據庫

下面給下我數據庫上面的代碼片斷。flask

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

界面來呢就是前段界面的編寫,和後端處理函數的編寫,這裏呢,我就不同敘述了,這裏呢 給你們下面的幾個地方的代碼片斷,展現下,主要是上傳和下載這一塊。框架

主要是測試日誌的下載。函數

@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

但願你們一塊兒衝菜鳥飛到更高

有錢的也能夠給我捧下。

 

 

 

 

 

我是一個大專生,也是一我的奮鬥到今天。

 

相關文章
相關標籤/搜索