forked from sammchardy/python-binance
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_validation.py
More file actions
121 lines (101 loc) · 2.88 KB
/
Copy pathtest_validation.py
File metadata and controls
121 lines (101 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/usr/bin/env python
# coding=utf-8
from binance.validation import validate_order
from binance.exceptions import *
import pytest
products = {
"INACTV": {
"quoteAsset": "BTC",
"symbol": "INACTV",
"withdrawFee": "0",
"status": "TRADING",
"minQty": "1E-8",
"minTrade": "1.00000000",
"baseAssetUnit": "",
"quoteAssetUnit": "฿",
"decimalPlaces": 8,
"baseAsset": "BNB",
"active": False,
"tickSize": "0.00000001",
"matchingUnitType": "STANDARD"
},
"BNBBTC": {
"quoteAsset": "BTC",
"symbol": "BNBBTC",
"withdrawFee": "0",
"status": "TRADING",
"minQty": "1E-8",
"minTrade": "1.00000000",
"baseAssetUnit": "",
"quoteAssetUnit": "฿",
"decimalPlaces": 8,
"baseAsset": "BNB",
"active": True,
"tickSize": "0.00000001",
"matchingUnitType": "STANDARD"
},
}
def test_missing_pair():
with pytest.raises(BinanceOrderUnknownSymbolException):
params = {
'symbol': 'NOTFND',
}
validate_order(params, products)
def test_inactive_pair():
with pytest.raises(BinanceOrderInactiveSymbolException):
params = {
'symbol': 'INACTV',
}
validate_order(params, products)
def test_invalid_price():
with pytest.raises(BinanceOrderMinPriceException):
params = {
'symbol': 'BNBBTC',
'price': float(products['BNBBTC']['tickSize']) * 0.9,
'quantity': 5
}
validate_order(params, products)
def test_invalid_quantity():
with pytest.raises(BinanceOrderMinAmountException):
multiples = [0.9, 1.1]
for m in multiples:
params = {
'symbol': 'BNBBTC',
'price': float(products['BNBBTC']['tickSize']),
'quantity': float(products['BNBBTC']['minTrade']) * m
}
validate_order(params, products)
def test_invalid_total():
with pytest.raises(BinanceOrderMinTotalException):
# BTC 0.001
params = {
'symbol': 'BNBBTC',
'price': 0.00001,
'quantity': 99 # total 0.00099
}
validate_order(params, products)
def test_valid_order():
params = [
{
'symbol': 'BNBBTC', # min order total
'price': 0.00001,
'quantity': 100
},
{
'symbol': 'BNBBTC', # min price
'price': float(products['BNBBTC']['tickSize']),
'quantity': 200000
},
{
'symbol': 'BNBBTC', # min quantity
'price': 0.002,
'quantity': 1
},
{
'symbol': 'BNBBTC', # min quantity
'price': 0.002,
'quantity': 1
},
]
for p in params:
validate_order(p, products)