Skip to content

Commit 56dcf5c

Browse files
Improve tests.
1 parent 4dddb80 commit 56dcf5c

18 files changed

+83
-195
lines changed

tests/integration/conftest.py

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from collections import namedtuple
12
from datetime import datetime
23
import os
34
from random import randint
@@ -7,7 +8,9 @@
78
import pytest
89

910
from labelbox import Client
10-
from labelbox.orm.model import Field
11+
12+
13+
IMG_URL = "https://picsum.photos/200/300"
1114

1215

1316
class IntegrationClient(Client):
@@ -34,14 +37,42 @@ def client():
3437
@pytest.fixture
3538
def rand_gen():
3639
def gen(field_type):
37-
if field_type == str:
40+
if field_type is str:
3841
return "".join(ascii_letters[randint(0, len(ascii_letters) - 1)]
3942
for _ in range(16))
4043

41-
if field_type == datetime:
44+
if field_type is datetime:
4245
return datetime.now()
4346

4447
raise Exception("Can't random generate for field type '%r'" %
4548
field.field_type)
4649

4750
return gen
51+
52+
53+
@pytest.fixture
54+
def project(client, rand_gen):
55+
project = client.create_project(name=rand_gen(str))
56+
yield project
57+
project.delete()
58+
59+
60+
@pytest.fixture
61+
def dataset(client, rand_gen):
62+
dataset = client.create_dataset(name=rand_gen(str))
63+
yield dataset
64+
dataset.delete()
65+
66+
67+
LabelPack = namedtuple("LabelPack", "project dataset data_row label")
68+
69+
70+
@pytest.fixture
71+
def label_pack(project, rand_gen):
72+
client = project.client
73+
dataset = client.create_dataset(name=rand_gen(str), projects=project)
74+
data_row = dataset.create_data_row(row_data=IMG_URL)
75+
label = project.create_label(data_row=data_row, label=rand_gen(str),
76+
seconds_to_label=0.0)
77+
yield LabelPack(project, dataset, data_row, label)
78+
dataset.delete()

tests/integration/test_asset_metadata.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
IMG_URL = "https://picsum.photos/200/300"
88

99

10-
def test_asset_metadata_crud(client, rand_gen):
11-
dataset = client.create_dataset(name=rand_gen(str))
10+
def test_asset_metadata_crud(dataset, rand_gen):
1211
data_row = dataset.create_data_row(row_data=IMG_URL)
1312
assert len(list(data_row.metadata())) == 0
1413

@@ -27,5 +26,3 @@ def test_asset_metadata_crud(client, rand_gen):
2726
data_row.metadata(order_by=AssetMetadata.meta_value.asc)
2827
assert exc_info.value.message == \
2928
"Relationship DataRow.metadata doesn't support sorting"
30-
31-
dataset.delete()
Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
IMG_URL = "https://picsum.photos/200/300"
2-
3-
4-
def test_benchmark(client, rand_gen):
5-
project = client.create_project(name=rand_gen(str))
6-
dataset = client.create_dataset(name=rand_gen(str), projects=project)
7-
data_row = dataset.create_data_row(row_data=IMG_URL)
8-
label = project.create_label(data_row=data_row, label="test",
9-
seconds_to_label=0.0)
1+
def test_benchmark(label_pack):
2+
project, _, data_row, label = label_pack
103
assert set(project.benchmarks()) == set()
114
assert label.is_benchmark_reference == False
125

@@ -22,6 +15,3 @@ def test_benchmark(client, rand_gen):
2215
# Refresh label data to check it's benchmark reference
2316
label = list(data_row.labels())[0]
2417
assert label.is_benchmark_reference == False
25-
26-
dataset.delete()
27-
project.delete()

tests/integration/test_client_errors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import labelbox.exceptions
1010

1111

12-
def test_missing_api_key(client, rand_gen):
12+
def test_missing_api_key(client):
1313
key = os.environ.get(labelbox.client._LABELBOX_API_KEY, None)
1414
if key is not None:
1515
del os.environ[labelbox.client._LABELBOX_API_KEY]

tests/integration/test_data_rows.py

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@
33
import pytest
44
import requests
55

6-
from labelbox import Project, Dataset, DataRow
6+
from labelbox import DataRow
77
from labelbox.exceptions import InvalidQueryError
88

99

1010
IMG_URL = "https://picsum.photos/200/300"
1111

1212

13-
def test_data_row_bulk_creation(client, rand_gen):
14-
dataset = client.create_dataset(name=rand_gen(str))
15-
13+
def test_data_row_bulk_creation(dataset, rand_gen):
14+
client = dataset.client
1615
assert len(list(dataset.data_rows())) == 0
1716

1817
# Test creation using URL
@@ -59,11 +58,9 @@ def test_data_row_bulk_creation(client, rand_gen):
5958
assert task.status == "COMPLETE"
6059
data_rows = len(list(dataset.data_rows())) == 5003
6160

62-
dataset.delete()
63-
6461

65-
def test_data_row_single_creation(client, rand_gen):
66-
dataset = client.create_dataset(name=rand_gen(str))
62+
def test_data_row_single_creation(dataset, rand_gen):
63+
client = dataset.client
6764
assert len(list(dataset.data_rows())) == 0
6865

6966
data_row = dataset.create_data_row(row_data=IMG_URL)
@@ -77,11 +74,8 @@ def test_data_row_single_creation(client, rand_gen):
7774
data_row_2 = dataset.create_data_row(row_data=fp.name)
7875
assert len(list(dataset.data_rows())) == 2
7976

80-
dataset.delete()
81-
8277

83-
def test_data_row_update(client, rand_gen):
84-
dataset = client.create_dataset(name=rand_gen(str))
78+
def test_data_row_update(dataset, rand_gen):
8579
external_id = rand_gen(str)
8680
data_row = dataset.create_data_row(row_data=IMG_URL, external_id=external_id)
8781
assert data_row.external_id == external_id
@@ -90,11 +84,8 @@ def test_data_row_update(client, rand_gen):
9084
data_row.update(external_id=external_id_2)
9185
assert data_row.external_id == external_id_2
9286

93-
dataset.delete()
9487

95-
96-
def test_data_row_filtering_sorting(client, rand_gen):
97-
dataset = client.create_dataset(name=rand_gen(str))
88+
def test_data_row_filtering_sorting(dataset, rand_gen):
9889
task = dataset.create_data_rows([
9990
{DataRow.row_data: IMG_URL, DataRow.external_id: "row1"},
10091
{DataRow.row_data: IMG_URL, DataRow.external_id: "row2"},
@@ -115,11 +106,8 @@ def test_data_row_filtering_sorting(client, rand_gen):
115106
assert list(dataset.data_rows(order_by=DataRow.external_id.asc)) == [row1, row2]
116107
assert list(dataset.data_rows(order_by=DataRow.external_id.desc)) == [row2, row1]
117108

118-
dataset.delete()
119-
120109

121-
def test_data_row_deletion(client, rand_gen):
122-
dataset = client.create_dataset(name=rand_gen(str))
110+
def test_data_row_deletion(dataset, rand_gen):
123111
task = dataset.create_data_rows([
124112
{DataRow.row_data: IMG_URL, DataRow.external_id: str(i)}
125113
for i in range(10)])
@@ -142,5 +130,3 @@ def test_data_row_deletion(client, rand_gen):
142130

143131
data_rows = list(dataset.data_rows())
144132
assert {dr.external_id for dr in data_rows} == expected
145-
146-
dataset.delete()

tests/integration/test_dataset.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ def test_dataset_filtering(client, rand_gen):
6262
d2.delete()
6363

6464

65-
def test_get_data_row_for_external_id(client, rand_gen):
66-
dataset = client.create_dataset(name=rand_gen(str))
65+
def test_get_data_row_for_external_id(dataset, rand_gen):
6766
external_id = rand_gen(str)
6867

6968
with pytest.raises(ResourceNotFoundError):

tests/integration/test_dates.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
from datetime import datetime, timedelta, timezone
22

33

4-
def test_dates(client):
5-
project = client.create_project(name="Test")
4+
def test_dates(project):
65
assert isinstance(project.created_at, datetime)
76
assert isinstance(project.updated_at, datetime)
87

98
project.update(setup_complete=datetime.now())
109
assert isinstance(project.setup_complete, datetime)
1110

12-
project.delete()
1311

14-
15-
def test_utc_conversion(client):
16-
project = client.create_project(name="Test")
12+
def test_utc_conversion(project):
1713
assert isinstance(project.created_at, datetime)
1814
assert project.created_at.tzinfo == timezone.utc
1915

@@ -29,5 +25,3 @@ def test_utc_conversion(client):
2925
project.update(setup_complete=datetime.utcnow().replace(tzinfo=tz))
3026
diff = datetime.utcnow() - project.setup_complete.replace(tzinfo=None)
3127
assert diff > timedelta(hours=5, minutes=58)
32-
33-
project.delete()

tests/integration/test_label.py

Lines changed: 8 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,13 @@
44
import requests
55

66
from labelbox import Label
7-
from labelbox.exceptions import InvalidQueryError
87

98

109
IMG_URL = "https://picsum.photos/200/300"
1110

1211

13-
def test_labels(client, rand_gen):
14-
project = client.create_project(name=rand_gen(str))
15-
dataset = client.create_dataset(name=rand_gen(str), projects=project)
16-
17-
data_row = dataset.create_data_row(row_data=IMG_URL)
18-
19-
label = project.create_label(data_row=data_row, label="test",
20-
seconds_to_label=0.0)
12+
def test_labels(label_pack):
13+
project, dataset, data_row, label = label_pack
2114

2215
# Labels are not visible in the project immediately.
2316
time.sleep(10)
@@ -36,15 +29,9 @@ def test_labels(client, rand_gen):
3629
assert list(project.labels()) == []
3730
assert list(data_row.labels()) == []
3831

39-
dataset.delete()
40-
project.delete()
41-
4232

43-
def test_label_export(client, rand_gen):
44-
project = client.create_project(name=rand_gen(str))
45-
dataset = client.create_dataset(name=rand_gen(str), projects=project)
46-
data_row = dataset.create_data_row(row_data=IMG_URL)
47-
project.create_label(data_row=data_row, label="l1", seconds_to_label=0.2)
33+
def test_label_export(label_pack):
34+
project, dataset, data_row, label = label_pack
4835
project.create_label(data_row=data_row, label="l2", seconds_to_label=0.3)
4936

5037
exported_labels_url = project.export_labels(5)
@@ -54,29 +41,13 @@ def test_label_export(client, rand_gen):
5441
# TODO check content
5542
assert False
5643

57-
dataset.delete()
58-
project.delete()
59-
6044

61-
def test_label_update(client, rand_gen):
62-
project = client.create_project(name=rand_gen(str))
63-
dataset = client.create_dataset(name=rand_gen(str), projects=project)
64-
data_row = dataset.create_data_row(row_data=IMG_URL)
65-
66-
label = project.create_label(data_row=data_row, label="l1", seconds_to_label=0.0)
45+
def test_label_update(label_pack):
46+
project, dataset, data_row, label = label_pack
6747

68-
assert label.label == "l1"
6948
label.update(label="something else")
7049
assert label.label == "something else"
7150

72-
# Check the label got updated server-side
73-
# Labels are not visible in the project immediately.
74-
time.sleep(10)
75-
assert list(project.labels())[0].label == "something else"
76-
77-
dataset.delete()
78-
project.delete()
79-
8051

8152
def test_label_filter_order(client, rand_gen):
8253
project = client.create_project(name=rand_gen(str))
@@ -110,9 +81,8 @@ def test_label_filter_order(client, rand_gen):
11081
project.delete()
11182

11283

113-
def test_label_bulk_deletion(client, rand_gen):
114-
project = client.create_project(name=rand_gen(str))
115-
dataset = client.create_dataset(name=rand_gen(str), projects=project)
84+
def test_label_bulk_deletion(project, rand_gen):
85+
dataset = project.client.create_dataset(name=rand_gen(str), projects=project)
11686
row_1 = dataset.create_data_row(row_data=IMG_URL)
11787
row_2 = dataset.create_data_row(row_data=IMG_URL)
11888

@@ -130,4 +100,3 @@ def test_label_bulk_deletion(client, rand_gen):
130100
assert set(project.labels()) == {l2}
131101

132102
dataset.delete()
133-
project.delete()

tests/integration/test_labeler_performance.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,15 @@
22
import time
33

44

5-
IMG_URL = "https://picsum.photos/200/300"
6-
7-
8-
def test_labeler_performance(client, rand_gen):
9-
project = client.create_project(name=rand_gen(str))
10-
assert list(project.labeler_performance()) == []
11-
12-
dataset = client.create_dataset(name=rand_gen(str), projects=project)
13-
data_row = dataset.create_data_row(row_data=IMG_URL)
14-
label = project.create_label(data_row=data_row, label="test",
15-
seconds_to_label=0.0)
5+
def test_labeler_performance(label_pack):
6+
project, dataset, data_row, label = label_pack
167
# Sleep a bit as it seems labeler performance isn't updated immediately.
178
time.sleep(10)
189

1910
labeler_performance = list(project.labeler_performance())
2011
assert len(labeler_performance) == 1
2112
my_performance = labeler_performance[0]
22-
assert my_performance.user == client.get_user()
13+
assert my_performance.user == project.client.get_user()
2314
assert my_performance.count == 1
2415
assert isinstance(my_performance.last_activity_time, datetime)
2516
now_utc = datetime.now().astimezone(timezone.utc)
Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import pytest
2-
31
from labelbox import LabelingFrontend
42

53

@@ -13,11 +11,10 @@ def test_get_labeling_frontends(client):
1311
assert len(single) == 1
1412

1513

16-
def test_labeling_frontend_connecting_to_project(client, rand_gen):
17-
project = client.create_project(name=rand_gen(str))
14+
def test_labeling_frontend_connecting_to_project(project):
1815
assert project.labeling_frontend() == None
1916

20-
frontend = list(client.get_labeling_frontends())[0]
17+
frontend = list(project.client.get_labeling_frontends())[0]
2118

2219
project.labeling_frontend.connect(frontend)
2320
assert project.labeling_frontend() == frontend
@@ -26,5 +23,3 @@ def test_labeling_frontend_connecting_to_project(client, rand_gen):
2623
project.labeling_frontend.disconnect(frontend)
2724
assert project.labeling_frontend() == None
2825
assert project not in set(frontend.projects())
29-
30-
project.delete()

0 commit comments

Comments
 (0)