python manage.py test auction.tests.AuctionBiddingTest
테스트 모듈을 만들어 실행하면
default로 설정된 DB에 test_* db database(schema)를 만든다.
그러나 에러가 중간에 난다면 삭제가 되지 않고 process는 sleep되며,
data는 lock걸린 상태로 유지된다. timeout 시간이 지날때까지 기다릴수도 있지만,
query문에서 exec명령어를 날려 프로세스를 kill하면 바로 data lock이 풀려 사용가능하다.
show processlist;
kill [id];
drop database [database_name];
flush privileges;
이외로 mysql 파라미터 설정을 바꾸어 주기위해
show variables like 'skip_resolve_name';
같은 파라미터를 확인한후 custom parameter group를 만들어 rds에 적용해 주어 설정을 바꿀 수 있다.
class AuctionBiddingTest(TestCase):
@classmethod
def setUpTestData(cls):
Placement.objects.create(
placement_title = '테스트',
placement_title_english = 'TEST',
placement_description = '설명',
placement_price=100000,
unit_price=50000,
placement_buynow_price = 1000000,
)
user1 = Users.objects.create_user('test1', 'eaa0305@naver.com', 'rkskekfk1')
Verification.objects.create(user=user1, phone='01025806413', phone_verified=True)
user2 = Users.objects.create_user('test2', 'eaa0103@gmail.com', 'rkskekfk1')
Verification.objects.create(user=user2, phone='01025806413', phone_verified=True)
user3 = Users.objects.create_user('test3', 'annalee98@naver.com', 'rkskekfk1')
Verification.objects.create(user=user3, phone='01025806413', phone_verified=True)
def setUp(self):
p=Placement.objects.get(id=1)
p.placement_price=100000
p.unit_price=50000
p.save()
#1회응찰만
def test_only_one_bid(self):
for user in Users.objects.all():
p=Placement.objects.get(id=1)
#'one-bid', 'auto-bid', 'buynow-bid'
placement_detail('POST', 1, user.id, 'one-bid', p.placement_price+(random.choice([1,2,3,4,5]))*p.unit_price)
print('1회 응찰객체결과')
for pbd in PlacementBid.objects.all().order_by('-placementbid_created'):
print(pbd, pbd.placementbid_created, pbd.is_superior)
#자동응찰만
def test_only_auto_bid(self):
li=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]
for i in range(3):
for user in Users.objects.all():
p=Placement.objects.get(id=1)
#'one-bid', 'auto-bid', 'buynow-bid'
placement_detail('POST', 1, user.id, 'auto-bid', p.placement_price+(random.choice(li[i]))*p.unit_price)
print('\n자동응찰기')
for a in AutoBid.objects.all():
print(a, a.limit)
print('\n자동 응찰객체결과')
for pbd in PlacementBid.objects.all().order_by('-placementbid_created'):
print(pbd, pbd.placementbid_created, pbd.is_superior)
#1회응찰, 자동응찰
def test_mix_one_auto_bid(self):
for _ in range(3):
self.test_only_auto_bid()
self.test_only_one_bid()
#1회응찰, 자동응찰, 바로구매 무작위
def test_random(self):
pass