PyPI에 PyQCheck을 등록했습니다. 이 Python에서 QuickCheck을 할 수 있는 프로그램 라이브러리입니다.
PyQCheck
지난해 8월 말 공개PyQCheck됐다.
Python 2.7로 계속 발행되며 setup입니다.만들다
창고에 넣어둔 상태라서.
아쉬운 마음에 다음과 같은 대응을 했다.
생성 프로세스
자세한 내용은 잊었지만 QuickCheck 이 프로그램 라이브러리는 어딘가의 아주 작은 범위 내에서 떠들썩해졌다
언어를 잘 쓰는 사람들을 각자 잘하고 좋아하는 프로그래밍 언어로 QuickCheck 스타일로
테스트를 할 수 있는 틀을 만든 것을 계기로 한 것 같아요.
뭐 해요?
간단하게 말하면 다음과 같은 동작
간단하게 말하면 다음과 같은 동작
일단 써볼게요.
작업 환경
동작 환경으로서 다음과 같은 조건이 있다
설치하다.
다음 명령을 사용하여 설치할 수 있습니다.
...시스템 환경 오염을 방지하기 위해pyvenv를 이용하여 설치 환경을 조정합니다.
distribute를 없애 easy.설치 준비 같은 거 설치할 거 넣고.
> mkdir ~/Sandbox/PyQCheck
> cd ~/Sandbox/PyQCheck
> pyvenv .venv
> source .venv/bin/activate
> curl -O http://python-distribute.org/distribute_setup.py
> python distribute_setup.py
> easy_install PyQCheck
이상 준비 완료.동작을 보다
다음은 샘플을 조작하는 데 사용되는 코드 쪽지를 동봉합니다.
equal_length.py# -*- coding:utf-8 -*-
from pyqcheck import PyQCheck, Arbitrary
def equal_length(a, b):
return len(a) == len(b)
PyQCheck(verbose=True).add(
Arbitrary(
('string', dict(min=10, max=10)),
('string', dict(min=10, max=10))
).property(
'len(a) == len(b)', equal_length
)
).run(10).result()
실행
다음 형식으로 출력해 보십시오.
뭐 해요?
# -*- coding:utf-8 -*-
from pyqcheck import PyQCheck, Arbitrary
def equal_length(a, b):
return len(a) == len(b)
PyQCheck(verbose=True).add(
Arbitrary(
('string', dict(min=10, max=10)),
('string', dict(min=10, max=10))
).property(
'len(a) == len(b)', equal_length
)
).run(10).result()
전송 문자열
결국
테스트 대상의 함수로 함수를 수신하는 자동 매개 변수의 처리
지정한 지원 형식과 데이터 길이 등의 값을 적당히 생성합니다
시험에 적절히 탈락하여 통과했습니까?이런 검사를 할 수 있다.
100번, 1000번, 10000번을 시도해 봤는데 통과하면 거의 괜찮아요.
이런 느낌.(QuickCheck의 원래 생각과 차이가 있을 수 있습니다.)
서법을 바꾸다
장식물로 쓸 수도 있어요.
equal_length.py# -*- coding:utf-8 -*-
from pyqcheck import PyQCheck, set_arbitrary
@set_arbitrary(
('string', dict(min=10, max=10)),
('string', dict(min=10, max=10))
)
def equal_length(a, b):
'''
len(a) == len(b)
'''
return len(a) == len(b)
PyQCheck(verbose=True).run(10).result()
나는 이 작법이 더욱 간결할 것이라고 생각한다...
이상한 사용법
PyQCheck의 이상한 사용법도 다음과 같은 방법을 사용할 수 있다.
다음 스크립트를 실행합니다.
실행에 관해서는 sqlite3과 링크를 효과적으로 하는 형식으로 Pythn3을 미리 구축해야 합니다.
insert_random_value_to_the_sqlite.py# -*- coding:utf-8 -*-
import sqlite3
from pyqcheck import PyQCheck, set_arbitrary
DB_NAME = 'test.db'
@set_arbitrary(
('integer', dict(min=0, max=100)),
('string', dict(min=3, max=10))
)
def insert_to_sqlite3(age, name):
con = sqlite3.connect(DB_NAME)
cur = con.cursor()
cur.execute('''
SELECT `name` FROM `sqlite_master`
WHERE `type`='table' AND name='users';
''')
if cur.fetchone() is None:
cur.execute('''
CREATE TABLE `users` (
`id` INTEGER NOT NULL PRIMARY KEY,
`age` INTEGER NOT NULL,
`name` STRING NOT NULL
);
''')
con.commit()
cur.execute('''
INSERT INTO `users` (`age`, `name`)
VALUES (?, ?)
''', (age, name))
con.commit()
return True
PyQCheck(verbose=True).run(30).result()
실행
실행해봐.
test.rb는 현재 디렉터리에서 만들어졌습니다. 내용을 봅시다.
PyQCheck의 텍스트 값을 생성하여 함수에 전달하는 특성 활용
듣자니 그는 가상 데이터의 생성에 사용하려고 시도했다고 한다.
미국의 주요, 세계의 국명입니다.
자주 사용하는 이름 데이터를 Arbitrary로 만들어 보세요.
나는 그렇게 하면 가상 데이터를 생성하는 데 쓸 수 있다고 생각한다.
금후
# -*- coding:utf-8 -*-
from pyqcheck import PyQCheck, set_arbitrary
@set_arbitrary(
('string', dict(min=10, max=10)),
('string', dict(min=10, max=10))
)
def equal_length(a, b):
'''
len(a) == len(b)
'''
return len(a) == len(b)
PyQCheck(verbose=True).run(10).result()
PyQCheck의 이상한 사용법도 다음과 같은 방법을 사용할 수 있다.
다음 스크립트를 실행합니다.
실행에 관해서는 sqlite3과 링크를 효과적으로 하는 형식으로 Pythn3을 미리 구축해야 합니다.
insert_random_value_to_the_sqlite.py
# -*- coding:utf-8 -*-
import sqlite3
from pyqcheck import PyQCheck, set_arbitrary
DB_NAME = 'test.db'
@set_arbitrary(
('integer', dict(min=0, max=100)),
('string', dict(min=3, max=10))
)
def insert_to_sqlite3(age, name):
con = sqlite3.connect(DB_NAME)
cur = con.cursor()
cur.execute('''
SELECT `name` FROM `sqlite_master`
WHERE `type`='table' AND name='users';
''')
if cur.fetchone() is None:
cur.execute('''
CREATE TABLE `users` (
`id` INTEGER NOT NULL PRIMARY KEY,
`age` INTEGER NOT NULL,
`name` STRING NOT NULL
);
''')
con.commit()
cur.execute('''
INSERT INTO `users` (`age`, `name`)
VALUES (?, ?)
''', (age, name))
con.commit()
return True
PyQCheck(verbose=True).run(30).result()
실행
실행해봐.
test.rb는 현재 디렉터리에서 만들어졌습니다. 내용을 봅시다.
PyQCheck의 텍스트 값을 생성하여 함수에 전달하는 특성 활용
듣자니 그는 가상 데이터의 생성에 사용하려고 시도했다고 한다.
미국의 주요, 세계의 국명입니다.
자주 사용하는 이름 데이터를 Arbitrary로 만들어 보세요.
나는 그렇게 하면 가상 데이터를 생성하는 데 쓸 수 있다고 생각한다.
금후
Reference
이 문제에 관하여(PyPI에 PyQCheck을 등록했습니다. 이 Python에서 QuickCheck을 할 수 있는 프로그램 라이브러리입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/futoase/items/4fcc7ba5e97ca968772d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)