09-01_Git,GitHub,Gitee集成Pycharm实现代码版本控制以及基于 Flask的接口Mock Server服务器

一、版本控制

1.作用

解决自动化团队之间的协同代码开发问题。
回归到以前的一个时间点。
对代码进行日志管理。
解决代码的冲突问题。

2.工具

CVS/VSS 版本控制工具的老祖

SVN   基于CS架构的版本控制工具,特点:集中式的版本控制

Git   Git是目前最主流的控制工具,特点:分布式的版本控制

 
集中式:版本库存放在中央服务器,操作:从服务器获得代码-->操作(增,删,改,查)-->提交到服务器。自动化团队在开发时必须联网(局域网) 才可以操作。
分布式:版本库没有中央处理器,每个人的电脑都是一个完整的版本库,不需要联网
 

名词解释:

Git:     版本控制工具
Gitee(码云):是一个网站,代码库是公开的,私人仓库是免费的。 服务器在国内是中文的。
GitHub:    是一个网站,代码库是公开的,私人仓库是需要收费的。服务器在国外是英文的。
GitLib:    项目,在本地的GitHub

 

使用Git版本控制工具:

  Git原理工作区       -->暂存区        -->本地版本库            -->push到(Gitee,Github,GitLib)
              手动新建a.py -->git add a.py  -->git commit -m  '注释’-->git push

(1)在(Gitee,Github,GitLib)上面创建仓库。

(2)让本地的文件和Gitee上面的仓库关联。

克隆命令:git clone https://gitee.com/wulisha/ms-wu.git(仓库地址)
1)gitee上查找创建的仓库地址

   2)进入仓库的工作区,在Git Bash窗口执行克隆命令:

 

(3)新增

进入项目名为test的目录,并新建一个a.py文件。
git status       查看当前版本库中的改动。(发现,手动创建a.py文件失败)
git add a.py           把文件提交到暂存区。(新建一个a.py文件)
git commit -m  '注释’ 把暂存区的文件提交到本地版本库。
git log         查看日志。
 
进入仓库的工作区,在Git Bash窗口执行克隆命令:
 
 
 

(4) 修改

直接修改文件。
git status   查看当前版本库中的改动。
git add a.py  把文件提交到暂存区。
git commit -m ‘注释’  把暂存区的文件提交到本地版本库。
----------------------------------------------------------------------------
再次直接修改文件。
git status   查看当前版本库中的改动。
git add a.py   把文件提交到暂存区。
git commit -m ‘注释’  把暂存区的文件提交到本地版本库。
---------------------------------------------------------------------------
git reset --hard b02b4a95b343a(版本ID)  还原到第2次提交时的代码
 

 

  

(5)删除

直接删除工作区的文件。(对于已经在版本库中的文件,直接删除工作区的文件,版本库还是有的)
git status      查看当前版本库中的改动。
删除版本库的文件:
git add .      把文件提交到暂存区。(.表示把当前所变动的所有状态全部提交一次)
git commit -m   ‘注释’ 把暂存区的文件提交到本地版本库。
 

 

问题:版本库已经删除,还能再回到还原到第2次提交时的代码吗?(git reset --hard b02b4a95b343a)  

答案:可以,只要代码进了版本库,全部可以恢复(reset撤回了的当然不可以了)

(6)把本地版本库里面的文件提交到gitee。

  git push 

(7)提交代码会冲突吗?

  如果说多个人操作的文件不一样,那么不冲突。
  如果说多个人操作的文件一样(配置文件),那么冲突。 --需要几个人对配置文件合到一起,再统一提交

3.能不能使用Git和Gitee(Github,Gitlib)集成Pycharm(能不能不用git push这种敲命令的方式提交代码?

(1)新建项目
(2)让Pycharm集成Git版本控制工具。

(3)让Pycharm集成Gitee,GItHub.   --先安装插件
 
 (4)分享项目到Gitee

 

 

 

 

 

 

 

(5)Pycharm文件颜色

红色:代表这个文件在       工作区
绿色:代表这个文件已经提交到    暂存区
无色:代表这个文件已经提交到    本地版本库
蓝色:代表文件          有改动
 
方式一 

方式二

有改动-蓝色

 

(6)把远程仓库的代码clone到本地
  注意:首次克隆若提示已经存在该仓库,则删除之后,重新clone即可
     

二、基于Flask的Mock Server服务器

1.Flask的简介

Flask是一个基于Python语言开发的Web应用框架。
 
安装:pip install flask 
第1阶段、@app.route("/"),             postman请求地址:http://127.0.0.1:5000/,默认get请求
from flask import Flask

# 初始化一个对象
app = Flask(__name__)

# 新建一个函数
# 把函数发布成一个接口:加上装饰器
@app.route("/")
def helloworld():
    return "helloworld"

if __name__ == '__main__':
    app.run()

----------------------------------------------------------------------------------------------------

C:\python37\python.exe C:/lisa/testgit/testcase/c.py
* Serving Flask app 'c' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

 




 
第2阶段、@app.route("/helloworld")      postman请求地址:http://127.0.0.1:5000/helloworld,默认get请求 
from flask import Flask

# 初始化一个对象
app = Flask(__name__)

# 新建一个函数
# 把函数发布成一个接口:加上装饰器
@app.route("/helloworld")
def helloworld():
    return "helloworld"

if __name__ == '__main__':
    app.run()

----------------------------------------------------------------------------------------------------------

C:\python37\python.exe C:/lisa/testgit/testcase/c.py
* Serving Flask app 'c' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

 



第3阶段、@app.route("/helloworld",methods=['POST','GET'])
postman请求地址:http://127.0.0.1:5000/helloworld,指定post、get请求

from flask import Flask

# 初始化一个对象
app = Flask(__name__)

# 新建一个函数
# 把函数发布成一个接口:加上装饰器
@app.route("/helloworld",methods=['POST','GET'])
def helloworld():
    return "helloworld"

if __name__ == '__main__':
    app.run()
-----------------------------------------------------------------------------------------------------------------

C:\python37\python.exe C:/lisa/testgit/testcase/c.py
* Serving Flask app 'c' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

 

 登录:

rom flask import Flask, request

# 初始化一个对象
app = Flask(__name__)

# 稍微复杂的接口(要求用户名和密码必须要MD5加密)
@app.route("/login", methods=['POST'])
def login():
    username = request.values.get("username")
    password = request.values.get("password")
    return "登录成功了"
 
print(username,password)
if __name__ == '__main__':
    app.run()
------------------------------------------------------------------

C:\python37\python.exe C:/lisa/testgit/testcase/c.py
* Serving Flask app 'c' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)


admin 123456
127.0.0.1 - - [29/Oct/2021 10:08:04] "POST /login HTTP/1.1" 200 -

 

 登录加密

import hashlib

from flask import Flask, request

# 初始化一个对象
app = Flask(__name__)

def md5(args):
    return hashlib.md5(str(args).encode('utf-8')).hexdigest()

# 稍微复杂的接口(要求用户名和密码必须要MD5加密)
@app.route("/login", methods=['POST'])
def login():
    # username password 为从postman获取的两个加密(通过写Pre-request Script脚本)参数
    username = request.values.get("username")
    password = request.values.get("password")
    print(username,password)

    # str(md5("admin")) str(md5("123")为python调用md5函数获取的两个加密参数
    # postman获得的加密参数和python调用MD5函数获得的加密参数进行比对
    if username==str(md5("admin")) and password==str(md5("123")):
        return "登录成功了"
    else:
        return "登录失败"

if __name__ == '__main__':
    app.run()

----------------------------------------------------------------------------------------------

C:\python37\python.exe C:/lisa/testgit/testcase/c.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Serving Flask app 'c' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
21232f297a57a5a743894a0e4a801fc3 202cb962ac59075b964b07152d234b70
127.0.0.1 - - [29/Oct/2021 10:32:52] "POST /login HTTP/1.1" 200 -

 

import hashlib
from flask import Flask, request

app = Flask(__name__)

def md5(args):
    return hashlib.md5(str(args).encode('utf-8')).hexdigest()

@app.route("/login", methods=['POST'])
def login():
    username = request.values.get("username")
    password = request.values.get("password")
    print(username,password)

    # 加密-大写
    if username==str(md5("admin")).upper() and password==str(md5("123")).upper():
        return "登录成功了"
    else:
        return "登录失败"

if __name__ == '__main__':
    app.run()

Mock服务使用场景:
前后端分离,当后端代码还没开发好,前段代码调用后端调试不了,测试也测不了
这时候,自己做一个mock服务器,走前端流程,来调后端接口数据
 
 
主要场景:前后端联调
电商网站调用支付宝或微信支付---金融公司,安全要求高
请问一下,你如何测试支付失败场景?
微信返回成功:  一个json数据固定
微信返回错误提示:一个json数据固定。
mock跳出界面测试,模拟请求被拦截,篡改,鉴权,加密之后的结果,去测试其他的场景
 
 

 

 


 

 

 

 


 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2021-10-27 10:00  lishawu  阅读(180)  评论(0)    收藏  举报