diff --git a/rocksdb/merge_operators.py b/rocksdb/merge_operators.py
new file mode 100644
index 0000000000000000000000000000000000000000..2484e6791a515cae339981422c64efff8ebd3658
--- /dev/null
+++ b/rocksdb/merge_operators.py
@@ -0,0 +1,22 @@
+import struct as py_struct
+from interfaces import AssociativeMergeOperator
+
+class UintAddOperator(AssociativeMergeOperator):
+    def merge(self, key, existing_value, value):
+        if existing_value:
+            s = py_struct.unpack('Q', existing_value)[0] + py_struct.unpack('Q', value)[0]
+            return (True, py_struct.pack('Q', s))
+        return (True, value)
+
+    def name(self):
+        return b'uint64add'
+
+class StringAppendOperator(AssociativeMergeOperator):
+    def merge(self, key, existing_value, value):
+        if existing_value:
+            s = existing_value + ',' + value
+            return (True, s)
+        return (True, value)
+
+    def name(self):
+        return b'StringAppendOperator'
diff --git a/setup.py b/setup.py
index 34133d19b1ccafe80b5da5b7f7f15ced4a421292..0b3f59c3e29cad904b99b486419285cdebf507e7 100644
--- a/setup.py
+++ b/setup.py
@@ -43,6 +43,7 @@ setup(
     package_dir={'rocksdb': 'rocksdb'},
     packages=find_packages('.'),
     ext_modules=cythonize([mod1]),
-    test_suite='rocksdb.tests',
+    setup_requires=['pytest-runner'],
+    tests_require=['pytest'],
     include_package_data=True
 )