本文正在参加「Python主题月」,详情查看 活动链接
前言
其实这事我不是不想拿出来写的,毕竟感觉自己也没做太多事情。
结果,Python主题月的活动,被测试同学看见了,说上次你帮我解决的问题为啥不更一篇文章呢?
我回答道,因为没有太多的技术含量呀。
测试同学听见了我回答,反驳道,也是经验和成果,快,给爷写,Python的代码我发你。
于是就有了这么一篇。
需求
其实需求就如上面截图所示啦,就是需要做大量的假数据,但是又不知道该如是好的测试同学问了搞iOS开发的我。
因为有的时候,我会考虑自己faker一些数据,通过Moya做一些简单的数据调试,所以对这个还算一知半解。
其实我是对金闪闪对红A说的那句话很深刻——你就是个faker!
所以你看,多了解ACG知识对于思维联想还是有作用的吧,大雾XD
上代码吧
所以废话不多说,直接上代码吧:
import faker
import time
def fakeData():
fake = faker.Faker(locale='zh_CN')
jasperId = ["101842918", "101200123", "101842000", "1112311342", "123422323"]
date = "20210318"
start = time.time()
for i in range(len(jasperId)):
# 这里举例子,没有做100w条,合计做5w条数据
for j in range(10000):
iccid = fake.random_number(digits = 20)
sim = fake.random_number(digits = 11)
msisdn = "86" + str(sim)
imsi = "4600" + str(sim)
string = jasperId[i] + "\t" + date + "\t" + str(iccid) + "\t"+ imsi + "\t" + msisdn + "\t" + "10\n"
with open ("esim.txt", "a+") as fp:
fp.write(string)
totalTime = time.time() - start
print("运行时间:{}".format(totalTime))
if __name__ == "__main__":
fakeData()
我顺便也收集了一下运行所用的时间:
接近9s的时间,做了差不多5w条数据,效率还算不错吧。
代码我是直接找测试同学给我的,其实我觉得那么多for循环,使用lamada难道不香嘛?
Faker的其他使用与扩展思考
上文提到过Swift中Moya的TargetType协议用有一个sampleData
,我们可以通过将faker框架下生成好的数据,最后转成Swift中的Data,以便于做测试。
public protocol TargetType {
/// The target's base `URL`.
var baseURL: URL { get }
/// The path to be appended to `baseURL` to form the full `URL`.
var path: String { get }
/// The HTTP method used in the request.
var method: Moya.Method { get }
/// Provides stub data for use in testing.
var sampleData: Data { get }
/// The type of HTTP task to be performed.
var task: Task { get }
/// The type of validation to perform on the request. Default is `.none`.
var validationType: ValidationType { get }
/// The headers to be used in the request.
var headers: [String: String]? { get }
}
另外,我们可以在本地起一个自己的后端服务,用于调试App的网络请求。
抑或将数据上传到专门的Mock网站中,通过Mock网站的Api去做网络请求调试。